如何通过jar设置主类可执行的vanilla groovy项目?
我变得非常沮丧.我无法在互联网上的任何地方找到我的问题的单一,有凝聚力的答案.很多文档,但没有任何东西可以将它们组合在一起(尽管我能找到).
我只需要有人告诉我: >如何设置一个groovy项目(编辑:包括放置源文件的位置,在哪些目录,目录结构等) 尽可能简单. 解决方法
我强烈推荐Gradle;设置非常简单(虽然我在学习它时也很挣扎).我在
github中添加了生成的项目.
让我们在没有IDE的情况下从零创建项目结构.我猜你已经有了 1.创建项目结构 > Download Gradle并将其放入$PATH 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使用的默认目录结构(我们可以更改它,但让我们使用默认值): >这是创建源代码目录: mkdir -p src/main/groovy >和测试源文件夹: mkdir -p src/test/groovy >最终结果应如下所示: gr8ex ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main │ └── groovy └── test └── groovy 2.添加源代码 >让我们添加一个测试包: mkdir -p src/test/groovy/org/gr8ex >并进行测试.我正在使用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!" } } >让我们执行测试并检查它是否失败: gradle test >是的,它失败了: /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 >让我们添加源文件夹 mkdir -p src/main/groovy/org/gr8ex >和一个源文件(我使用gedit src / main / groovy / org / gr8ex / Hello.groovy).注意它已经有我们的静态main方法: package org.gr8ex class Hello { def getWorld() { "Hello,World!" } static main(args) { println new Hello().world } } >再次测试(使用gradle测试)并断言我们得到消息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”方法. >让我们在build.gradle中添加一个fatjar指令[5]: task fatjar(type: Jar) { manifest { attributes 'Main-Class': 'org.gr8ex.Hello' } from { configurations .runtime .collect { it.isDirectory() ? it : zipTree(it) } } with jar } >包装: gradle fatjar >生成的jar将位于builds / libs / gr8ex.jar中.让我们执行它: $java -jar build/libs/gr8ex.jar Hello,World! >利润!您可以使用intellij和(我相信)eclipse导入此项目. [1]:Gradle创建一些基本结构并添加包装脚本,以便在没有Gradle的情况下执行它(如果需要). [2]:我们告诉gradle这个项目将使用groovy [3]:我们告诉gradle使用mavencentral存储库. JCenter也很受欢迎. [4]:这里我们告诉gradle这个项目需要在编译和测试阶段使用groovy-all lib [5]:如果你只是坚持使用jar {}指令,比如this answer,那么你将会看到一个非常薄的jar,它将缺少groovy libs.这个“fatjar”将你的libs打包到jar中.根据您的使用情况,您可能需要稍微调整一下. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |