我有以下项目结构:
└───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个项目目录:lib
,server
,client
他们有一个构建目录与另外两个目录:libs
中的tmp
和tmp
只有一个文件jar/MANIFEST.MF
,如下所示:
Manifest-Version: 1.0
在lib
- 目录中,有一个1KB大的jar存档。当我提取jar存档时,只有来自MANIFEST.MF
的{{1}}文件。
当我调用gradle任务tmp
时,我得到以下结构:
projects
答案 0 :(得分:0)
您应该使用不同的项目结构:
lib
src/main/java
build.gradle
server
src/main/java
build.gradle
client
src/main/java
build.gradle
build.gradle
settings.gradle