Java Gradle-一个项目,多个包,多个JAR

Java Gradle-一个项目,多个包,多个JAR,java,intellij-idea,gradle,project-setup,Java,Intellij Idea,Gradle,Project Setup,我问你一个非常基本的问题,但我希望你能抽出时间来帮助我: 我正在尝试实现一个java项目,它可以生成几个不同的程序,这些程序部分依赖于我的其他项目 为了保持简单,我希望所有代码都在一个项目中,由Gradle运行,因此如果我对中央库(例如数据库连接器)进行更改,所有子程序都会自动接收更改 一个例子如下所示: 项目: 方案A 中央图书馆 程序 输出: 程序_A.jar(包括中央图书馆) program_B.jar(包括中央图书馆) 现在,我很难找到一个正确的构建脚本,我想知道这里是否有人可以

我问你一个非常基本的问题,但我希望你能抽出时间来帮助我:

我正在尝试实现一个java项目,它可以生成几个不同的程序,这些程序部分依赖于我的其他项目

为了保持简单,我希望所有代码都在一个项目中,由Gradle运行,因此如果我对中央库(例如数据库连接器)进行更改,所有子程序都会自动接收更改

一个例子如下所示:

项目:

  • 方案A
  • 中央图书馆
  • 程序
输出:

  • 程序_A.jar(包括中央图书馆)
  • program_B.jar(包括中央图书馆)
现在,我很难找到一个正确的构建脚本,我想知道这里是否有人可以帮助我


注意:由于我是新手,如果我应该通过Gradleproject中的不同模块而不是Gradleproject源文件中的不同包来实现这一点,请随时告诉我:)

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

gradle init --type=java-library

然后在根目录中创建一个gradle多模块项目。基本上 只运行

gradle init
然后创建settings.gradle并在其中列出所有子项目

这在gradle文档中有很好的描述:
如果我理解正确,您要做的是,当您更改本地项目时,您希望其他项目看到这些详细信息。为此,您需要将项目发布到某种形式的repo,比如maven repo。您可以从命令行
gradlepublishtoavenlocal
,或
gradlebuildptml
执行此操作。您也可以在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
            }
        }
    }

一种方法是有一个根项目,其中包含其他三个项目

在其
设置.gradle
文件中指定子项目:

rootProject.name = 'RootProject'
include 'program_A'
include 'central_library'
include 'program_B'
有了它,
程序可以通过在其
构建中添加依赖项来依赖于
中央库
。gradle

dependencies {
    compile project(':central_library')
}
我在其中一个中有类似的设置,尽管“中央库”是根项目,子模块是测试环境

dependencies {
    compile project(':central_library')
}