加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:26:01 所属栏目:大数据 来源:网络整理
导读:我变得非常沮丧.我无法在互联网上的任何地方找到我的问题的单一,有凝聚力的答案.很多文档,但没有任何东西可以将它们组合在一起(尽管我能找到). 我只需要有人告诉我: 如何设置一个groovy项目(编辑:包括放置源文件的位置,在哪些目录,目录结构等) 假设我之前
我变得非常沮丧.我无法在互联网上的任何地方找到我的问题的单一,有凝聚力的答案.很多文档,但没有任何东西可以将它们组合在一起(尽管我能找到).

我只需要有人告诉我:

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

尽可能简单.

解决方法

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

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

1.创建项目结构

> Download 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'
}

现在是源文件;我们需要创建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中.根据您的使用情况,您可能需要稍微调整一下.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读