我变得非常沮丧.我无法在互联网上的任何地方找到我的问题的单一,有凝聚力的答案.很多文档,但没有任何东西可以将它们组合在一起(尽管我能找到).
我只需要有人告诉我:
java -jar <groovy-project>.jar打印出"hello world"尽可能简单.
我强烈推荐Gradle; 设置非常简单(虽然我在学习它时也很挣扎).我在github中添加了生成的项目.
让我们在没有IDE的情况下从零创建项目结构.我认为你已经$JAVA_HOME设置好了.
下载Gradle并将其放入您的$PATH
创建目录项目(我创建/tmp/gr8ex)
切换到它然后运行gradle init[1]
编辑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'
}
Run Code Online (Sandbox Code Playgroud)现在是源文件; 我们需要创建gradle使用的默认目录结构(我们可以更改它,但让我们使用默认值):
这是创建源代码目录:
mkdir -p src/main/groovy
Run Code Online (Sandbox Code Playgroud)和测试源文件夹:
mkdir -p src/test/groovy
Run Code Online (Sandbox Code Playgroud)最终结果应如下所示:
gr8ex
??? build.gradle
??? gradle
? ??? wrapper
? ??? gradle-wrapper.jar
? ??? gradle-wrapper.properties
??? gradlew
??? gradlew.bat
??? settings.gradle
??? src
??? main
? ??? groovy
??? test
??? groovy
Run Code Online (Sandbox Code Playgroud)让我们添加一个测试包:
mkdir -p src/test/groovy/org/gr8ex
Run Code Online (Sandbox Code Playgroud)并且测试.我正在使用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!"
}
}
Run Code Online (Sandbox Code Playgroud)让我们执行测试并检查它是否失败:
gradle test
Run Code Online (Sandbox Code Playgroud)是的,它失败了:
/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
Run Code Online (Sandbox Code Playgroud)我们来添加源文件夹
mkdir -p src/main/groovy/org/gr8ex
Run Code Online (Sandbox Code Playgroud)和一个源文件(我用过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
}
}
Run Code Online (Sandbox Code Playgroud)再次测试(带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
Run Code Online (Sandbox Code Playgroud)完成.是时候创建应用程序jar了.
jar可执行文件有几种方法可以实现这一点(如阴影插件).我会坚持使用"胖子"的方法.
让我们fatjar在build.gradle[5]中添加一条指令:
task fatjar(type: Jar) {
manifest {
attributes 'Main-Class': 'org.gr8ex.Hello'
}
from {
configurations
.runtime
.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar
}
Run Code Online (Sandbox Code Playgroud)包装它:
gradle fatjar
Run Code Online (Sandbox Code Playgroud)结果jar将在builds/libs/gr8ex.jar.让我们执行它:
$ java -jar build/libs/gr8ex.jar
Hello, World!
Run Code Online (Sandbox Code Playgroud)利润!您可以使用intellij和(我相信)eclipse导入此项目.
[1]:Gradle创建一些基本结构并添加包装脚本,以便在没有Gradle的情况下执行它(如果需要).
[2]:我们告诉gradle这个项目将使用groovy
[3]:我们告诉gradle使用mavencentral存储库.JCenter也很受欢迎.
[4]:这里我们告诉gradle这个项目需要在编译和测试阶段使用groovy-all lib
[5]:如果你只是坚持一个jar {}指令,就像这个答案一样,你将以一个非常薄的罐子结束,这将缺少groovy libs.这个"fatjar"将你的libs打包到jar中.根据您的使用情况,您可能需要稍微调整一下.
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |