2017-06-22 31 views
0

我有以下项目结构: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疗法目录:在tmplibstmp存在的仅仅是文件jar/MANIFEST.MF看起来像这样:

Manifest-Version: 1.0 

lib -Directory有一个JAR档案文件是1KB大。当我解压缩jar文件时,里面只有tmpMANIFEST.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 
+0

约多项目构建您应该重新阅读userguide。子项目的'build.gradle'甚至没有被读取,但默认使用空的,因为你的目录结构不符合你在'settings.gradle'中配置的内容。 – Vampire

+0

你有一个例子,我的项目目录应该是这样吗? 'settings.gradle'文件指定它应该如何。我找不到有关多项目项目结构的任何提示:https://docs.gradle.org/3.3/userguide/intro_multi_project_builds.html文档只是指定如何设置'settings.gradle' – shibumi

+0

https:/ /github.com/gradle/oreilly-gradle-book-examples/tree/master/multiproject-individual – Vampire

回答

0

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

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