我有以下项目结构:gradle这个生成的罐子是空的
└───src
└───main
└───java
├───client
├───lib
└───server
我要产生2个gradle这个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'
)
}
}
有一个在/src/main/java/lib
没有build.gradle
当我运行任务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
这一构建过程后,我有一个bin目录与所有类文件和build.gradle文件,我有3个项目目录:lib
,server
,client
他们有一个建立目录与两个o疗法目录:在tmp
libs
和tmp
存在的仅仅是文件jar/MANIFEST.MF
看起来像这样:
Manifest-Version: 1.0
在lib
-Directory有一个JAR档案文件是1KB大。当我解压缩jar文件时,里面只有tmp
的MANIFEST.MF
文件。
当我调用gradle这个任务projects
我得到以下结构:
Root project 'rmi-tutorial'
+--- Project ':client'
+--- Project ':lib'
\--- Project ':server'
To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :client:tasks
BUILD SUCCESSFUL
Total time: 0.055 secs
约多项目构建您应该重新阅读userguide。子项目的'build.gradle'甚至没有被读取,但默认使用空的,因为你的目录结构不符合你在'settings.gradle'中配置的内容。 – Vampire
你有一个例子,我的项目目录应该是这样吗? 'settings.gradle'文件指定它应该如何。我找不到有关多项目项目结构的任何提示:https://docs.gradle.org/3.3/userguide/intro_multi_project_builds.html文档只是指定如何设置'settings.gradle' – shibumi
https:/ /github.com/gradle/oreilly-gradle-book-examples/tree/master/multiproject-individual – Vampire