gpt4 book ai didi

java - 如何通过 jar 设置主类可执行文件的 vanilla groovy 项目?

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:49 25 4
gpt4 key购买 nike

我感到非常沮丧。我无法在 Internet 上的任何地方为我的问题找到一个单一的、有凝聚力的答案。很多文档,但没有任何东西可以将它们组合在一起(我能找到)。

我只需要有人告诉我:

  • 如何设置 groovy 项目(编辑:包括将源文件放在哪里、放在什么目录、目录结构等)
  • 假设我之前没有构建过 groovy
  • 或之前的java(我有,但和我一起工作)
  • 以一种我可以指定依赖项的方式(这是我的依赖项 --> https://github.com/bpsm/edn-java )所以可能使用 maven 或 gradle
  • 一个有一个主类和一个主方法的(同样,和我一起工作)
  • 在构建结束时,我需要一个可以通过 java -jar <groovy-project>.jar 执行的 jar 文件打印出“hello world”

尽可能简单。

最佳答案

我强烈推荐 Gradle;它设置起来非常简单(尽管我在学习它时也很挣扎)。我在 github 中添加了生成的项目.

让我们在没有 IDE 的情况下从零开始创建一个项目结构。我想你已经有了 $JAVA_HOME set up .

1。创建项目结构

  1. Download Gradle并将其放入您的 $PATH

  2. 创建你的目录项目(我创建了/tmp/gr8ex)

  3. 切换到它并运行 gradle init [1]

  4. 编辑 build.gradle 创建的文件并添加以下行:

    plugins { // [2]
    id 'groovy'
    }

    repositories { mavenCentral() } // [3]

    dependencies { // [4]
    testCompile 'org.codehaus.groovy:groovy-all:2.4.8'
    compile 'org.codehaus.groovy:groovy-all:2.4.8'
    testCompile 'junit:junit:4.12'
    }

现在是源文件;我们需要创建 gradle 使用的默认目录结构(我们可以更改它,但让我们使用默认值):

  1. 这是创建源代码目录:

    mkdir -p src/main/groovy
  2. 和测试源文件夹:

    mkdir -p src/test/groovy
  3. 最终结果应该是这样的:

    gr8ex
    ├── build.gradle
    ├── gradle
    │ └── wrapper
    │ ├── gradle-wrapper.jar
    │ └── gradle-wrapper.properties
    ├── gradlew
    ├── gradlew.bat
    ├── settings.gradle
    └── src
    ├── main
    │ └── groovy
    └── test
    └── groovy

2。添加源代码

  1. 让我们添加一个测试包:

    mkdir -p src/test/groovy/org/gr8ex
  2. 还有一个测试。我正在使用 gedit src/test/groovy/org/gr8ex/HelloTest.groovy:

    package org.gr8ex

    class HelloTest extends GroovyTestCase {
    void 'test Hello should return "Hello, World!"' () {
    assert new Hello().world == "Hello, World!"
    }
    }
  3. 让我们执行测试并检查它是否失败:

    gradle test
  4. 是的,它失败了:

    /tmp/gr8ex/src/test/groovy/org/gr8ex/HelloTest.groovy: 5: unable to resolve class Hello 
    @ line 5, column 12.
    assert new Hello().world == "Hello, World!"
    ^

    1 error

    :compileTestGroovy FAILED
  5. 让我们添加源文件夹

    mkdir -p src/main/groovy/org/gr8ex
  6. 和一个源文件(我使用了gedit src/main/groovy/org/gr8ex/Hello.groovy)。注意它已经有了我们的 static main 方法:

    package org.gr8ex

    class Hello {
    def getWorld() {
    "Hello, World!"
    }

    static main(args) {
    println new Hello().world
    }
    }
  7. 再次测试(使用 gradle test)并断言我们收到消息 BUILD SUCCESSFUL:

    $ gradle test
    :compileJava UP-TO-DATE
    :compileGroovy
    :processResources UP-TO-DATE
    :classes
    :compileTestJava UP-TO-DATE
    :compileTestGroovy
    :processTestResources UP-TO-DATE
    :testClasses
    :test

    BUILD SUCCESSFUL

    Total time: 5.52 secs

完成。是时候创建我们的应用程序 jar 了。

3。创建jar 可执行文件

有几种方法可以实现(例如 shadow plugin )。我要坚持使用 "fatjar"方法。

  1. 让我们在 build.gradle [5] 中添加一个 fatjar 指令:

    task fatjar(type: Jar) {
    manifest {
    attributes 'Main-Class': 'org.gr8ex.Hello'
    }
    from {
    configurations
    .runtime
    .collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar
    }
  2. 打包:

    gradle fatjar
  3. 生成的 jar 将在 builds/libs/gr8ex.jar 中。让我们执行它:

    $ java -jar build/libs/gr8ex.jar 
    Hello, World!
  4. 利润!您可以使用 intellij 和(我相信)eclipse 导入该项目。


[1]:Gradle 创建一些基本结构并添加包装器脚本,因此如果需要,它可以在没有 Gradle 的情况下执行。

[2]: 这里我们告诉gradle这个项目将使用groovy

[3]:我们告诉 gradle 使用 mavencentral 存储库。 JCenter 也很受欢迎。

[4]: 这里我们告诉gradle这个项目需要在编译和测试阶段使用groovy-all lib

[5]:如果您只是坚持使用 jar {} 指令,例如 this answer ,您将以一个非常薄的 jar 结束,它将缺少 groovy 库。这个“fatjar”将你的库打包到 jar 里。您可能需要根据您的用例对其进行一些调整。

关于java - 如何通过 jar 设置主类可执行文件的 vanilla groovy 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com