jar的Gradle自定义任务

CMP*_*MPS 7 java groovy gradle

我正在使用Gradle作为我的Java项目,我想知道是否可以防止gradle build每次执行时都创建一个jar文件.

此外,是否可以使用自定义任务在特定位置创建具有依赖关系的Jar build/myAppJar/.

这是我到目前为止的自定义任务:

task toJar (type: Jar) {
    from configurations.compile.collect { zipTree it }
    manifest {
        attributes 'Implementation-Title': 'myApp',
                'Implementation-Version': 1.0,
                'Main-Class': mainClassName
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将在下面创建jar文件build/libs,并且该文件不包含已编译的文件,只包含依赖项.

谢谢!

RaG*_*aGe 6

build任务来自java插件.您可以使用以下内容控制jar的构建时间:

jar {
  onlyIf { condition }
}
Run Code Online (Sandbox Code Playgroud)

您可以将jar设置为在声明其他内容为true时生成,或者将其设置为false以从不构建jar.

您可以在toJar自定义任务中包含源集,以将已编译的文件包含在jar中.

task toJar (type: Jar) {
    from sourceSets.all
}
Run Code Online (Sandbox Code Playgroud)

您明确要求所有编译时依赖项都包含在jar中: from configurations.compile.collect

ref:Gradle java插件

  • 有效,谢谢,我刚刚将`sourceSets.all` 更改为`sourceSets.main.runtimeClasspath` (3认同)