2017-10-06 58 views
2

我问你一个很基本的问题,但我希望你能找到时间来帮助我:摇篮 - 一个项目,多个包,多瓶

我想实现一个Java的项目,可以吐出几个不同的程序,部分依赖于我的其他项目。为了简单起见,我想让一个项目中的所有代码都由Gradle运行,所以如果我更改中央库(例如数据库连接器),所有子程序都会自动接收变化。

一个例子可能是这样的:

项目:

  • program_A
  • central_library
  • PROGRAM_B

输出:

  • program_A.jar(包括中央图书馆)
  • program_B.jar

现在我有严重的麻烦找到这个正确的buildscript,想知道是否有人在这里可以帮助我(包括中央图书馆) 。

P.S. :由于我对此很陌生,如果我应该通过Gradle项目中的不同模块来实现此目的,而不是Gradle项目源文件中的不同软件包,请随时告诉我:)

回答

0

创建根目录并将每个库或程序进入自己的子目录。 在每个子项目中创建一个gradle项目。 例如,您可以通过运行

gradle init --type=java-library 

gradle init --type=java-application 

然后在根目录下创建gradle这个多模块项目中创建的Gradle框架项目。基本上 只运行

gradle init 

,然后创建一个settings.gradle并列出所有子项目那里。

这个gradle这个文档中描述实际上很好:

0

如果我理解正确的话,你想要做的是,当你改变你的本地项目,你想其他项目看到这些细节。为此,您需要将您的项目发布到某种类型的回购,例如Maven回购。您可以从命令行gradle publishToMavenLocalgradle build pTMl执行此操作。你也可以用类似下面这样做在的build.gradle文件:

task sourceJar (type : Jar) { 
     classifier = constants.extSources 
     from sourceSets.main.allSource 
    } 

    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
      artifact(sourceJar) { 
       classifier "sources" //classifier = constants.extSources 
      } 
     } 
    } 
0

一种方式来处理,这是有根的项目,保存它里面的其他三个项目。

指定其settings.gradle文件中的子项目:

rootProject.name = 'RootProject' 
include 'program_A' 
include 'central_library' 
include 'program_B' 

有了这个地方,program_a可以通过在其build.gradle添加依赖取决于central_library

dependencies { 
    compile project(':central_library') 
} 

我有一个类似设置为my projects之一,但“中央库”是根项目,子模块是测试环境。