子项目中的gradle生成的jar是空的

时间:2017-06-22 13:05:47

标签: gradle build.gradle gradle-plugin gradle-eclipse

我有以下项目结构:

└───src
    └───main
        └───java
            ├───client
            ├───lib
            └───server

我想用gradle生成2个jar档案。 server的一个jar存档和client的一个jar存档。这两个项目都依赖于lib

我的settings.gradle看起来像这样:

include 'client', 'lib', 'server'
rootProject.name = 'rmi-tutorial'

我的build.gradle看起来像这样:

subprojects {
    apply plugin: 'java'
    apply plugin: 'application'


    repositories {
        mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.12'
    }
}

build.gradle中的src/main/java/client/build.gradle文件如下所示:

dependencies {
    compile project(':lib')
}


mainClassName = 'client.ComputePi'

jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'client.ComputePi'
    )
  }
}

build.gradle中的/src/main/java/server/文件如下所示:

dependencies {
    compile project(':lib')
}


mainClassName = 'server.ClientEngine'

jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'server.ComputeEngine'
    )
  }
}

build.gradle

中没有/src/main/java/lib

当我运行任务jar时,我得到以下输出:

Working Directory: C:\Users\cre13\workspace\rmi-tutorial
Gradle User Home: C:\Users\cre13\.gradle
Gradle Distribution: Gradle wrapper from target build
Gradle Version: 3.0
Java Home: C:\Program Files\Java\jdk1.8.0_101
JVM Arguments: None
Program Arguments: None
Gradle Tasks: jar

:client:compileJava UP-TO-DATE
:client:processResources UP-TO-DATE
:client:classes UP-TO-DATE
:client:jar
:lib:compileJava UP-TO-DATE
:lib:processResources UP-TO-DATE
:lib:classes UP-TO-DATE
:lib:jar
:server:compileJava UP-TO-DATE
:server:processResources UP-TO-DATE
:server:classes UP-TO-DATE
:server:jar

BUILD SUCCESSFUL

Total time: 0.107 secs

在这个构建过程之后,我有一个包含所有类文件和build.gradle文件的bin目录,我有3个项目目录:libserverclient他们有一个构建目录与另外两个目录:libs中的tmptmp只有一个文件jar/MANIFEST.MF,如下所示:

Manifest-Version: 1.0

lib - 目录中,有一个1KB大的jar存档。当我提取jar存档时,只有来自MANIFEST.MF的{​​{1}}文件。

当我调用gradle任务tmp时,我得到以下结构:

projects

1 个答案:

答案 0 :(得分:0)

您应该使用不同的项目结构:

  • lib
    • src/main/java
    • build.gradle
  • server
    • src/main/java
    • build.gradle
  • client
    • src/main/java
    • build.gradle
  • build.gradle
  • settings.gradle