Gradle构建不会生成jar

时间:2019-09-20 15:29:20

标签: gradle intellij-idea jar build.gradle

我想将我的项目构建为仅包含我的代码的jar文件。该项目jar用作其他Java项目的库。

这是我的build.gradle:

plugins {
    id 'java'
}

group 'com.my.lib'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

task sourcesJar(type: Jar) {
    archiveClassifier = 'sources'
    from sourceSets.main.allJava
}


dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

构建项目后(我正在使用IntelliJ,单击“构建” ==>“重建项目”)。 IntelliJ告诉我构建成功,但是我看不到创建任何jar。为什么?

18:30:18: Executing tasks ':classes :testClasses'...

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses

BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
18:30:18: Tasks execution finished ':classes :testClasses'.

3 个答案:

答案 0 :(得分:1)

IntelliJ IDEA的“构建项目”表单将编译您的代码以在IDE中使用,它并不直接与Gradle的build生命周期任务联系在一起。

要让Gradle构建JAR,您需要运行./gradlew assemble,它将获得预期的结果。 请注意,这将不会运行测试或静态分析。如果您希望它也能正常运行,则可以使用./gradlew build

这两个Gradle任务都可以在IntelliJ IDEA的Gradle工具窗口中执行。

答案 1 :(得分:0)

您上面的日志中没有提到sourcesJar任务,这意味着该任务尚未运行。在设置>生成,执行,部署>生成工具> Gradle 菜单下,有两个设置可供考虑:
使用Gradle构建并运行
使用Gradle运行测试。

然后转到Idea中的Gradle工具窗口,同步项目并在“任务”组下查找任务。

enter image description here

如果您打算对项目中的所有开发人员都具有相同的行为,则可能应该坚持使用Gradle而不是使用Idea Artifacts 设置来构建jar文件。

答案 2 :(得分:0)

我发现即使有这些设置,当我选择Build-> Build project时,Intellij仍然没有运行Gradle build,这就是为什么在我最初的问题中没有显示“ sourceJar”的原因。我必须打开“ Gradle工具”窗口,单击该小象图标以运行gradle任务。然后,键入“ Gradle build”,然后运行源Jar任务。