gpt4 book ai didi

java - 引用不同子项目中的自定义 jar 文件

转载 作者:行者123 更新时间:2023-11-30 07:21:55 25 4
gpt4 key购买 nike

帖子Gradle multiple jars from single source folder讨论如何生成多个 .jar 文件。但是,如何在多项目构建的其他子项目中依赖这些 .jar 文件呢?

例如,假设我的项目结构如下:

./
├── build.gradle
├── settings.gradle
├── foo/
│ ├── src/
│ │ ├── main/java/
│ │ └── plugins/java/
│ └── build.gradle
└── bar/
├── src/main/java/
└── build.gradle

foo/build.gradle 使用此任务构建一个额外的 .jar:

sourceSets {
plugins
}
task pluginsJar(type: Jar) {
from sourceSets.plugins.output
}

我可以在 bar/build.gradle 中放入什么以使 bar 依赖于 plugins.jar?我尝试这样做:

dependencies {
runtime project(':foo:plugins')
}

但是 Gradle 说:

Project with path ':foo:plugins' could not be found in project ':bar'

最佳答案

您无需将它们发布为 jar 即可将它们作为依赖项。为了使 foo 成为 bar 的依赖项,这就是您所需要的。下面列出了一些方法,具体取决于您需要的配置。请参阅示例下面的链接。

// Compiles for test only
dependencies {
testCompile project(':foo')
}

// To have the dependency compiled in the project, if you make a stand alow jar then you will need to zip the files in the "Jar" task.
dependencies {
compile project(':foo')
}

dependencies {
runtime project(':foo')
}

// 2.13 gradle only - Allow to compile the project and load the jar from a source and add it to the classpath while the application is running
dependencies {
compileOnly project(':foo')
}

Chapter 23. Dependency Management

编辑:最有效的方法是使用 gradles 内置的多模块功能。您将能够将每个插件作为主项目中的一个单元进行管理,并能够将每个插件 jar 作为批量操作或使用不会影响其他插件或主应用程序的特定参数来发布。一旦建立了此基础,您就可以在基础项目上调用 jar 任务,并且所有主题都将被构建。您可以在应用程序启动时或运行时动态加载插件。

Chapter 24. Multi-project Builds

这里有两个例子。

RootModule/
build.gradle
settings.gradle
ApplicationModule/
build.gradle
Plugin1Module/
build.gradle
Plugin2Module/
build.gradle
Plugin3Module/
build.gradle

   Project 1 main application:
ApplicationModule/
build.gradle
settings.gradle

Project 2 plugins: (dependency on 1 API jar)
RootModule/
build.gradle
settings.gradle
Plugin1Module/
build.gradle
Plugin2Module/
build.gradle
Plugin3Module/
build.gradle
Plugin4Module/
build.gradle
Plugin5Module/
build.gradle
Plugin6Module/
build.gradle

关于java - 引用不同子项目中的自定义 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37415569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com