我在 mvn 上构建了 2 个不同的项目。我正在尝试替换为 Gradle。
项目 1 是一个 SDK,项目 2 正在使用该 SDK(示例)。
在 Maven 时代,它使用 mvn install 创建工件,将整个项目添加到本地存储库中。
我喜欢这样在gradle中工作。我喜欢项目 1 build.gradle 需要将其发布为 gradle 本地存储库,然后示例项目需要使用它。
在 Maven 中,我们执行 mvn install ,它将项目工件添加到 .m2 文件夹中,但是如何在 gradle 中执行,以便我可以将项目工件添加到本地存储库中。
我有什么办法可以做到吗?
sdk/build.gradle
:
apply plugin: "maven"
group = "foo"
version = "1.0"
example/build.gradle
:
repositories {
mavenLocal()
}
dependencies {
compile "foo:sdk:1.0"
}
$sdk> gradle install
$example> gradle build
您可能正在寻找:
gradle publishToMavenLocal
提供:
apply plugin: 'maven-publish'
gradle -Dmaven.repo.local=.m2/repository publishToMavenLocal
maven
插件的 gradle install
有何不同?
maven
插件已在 Gradle 7 中删除
查看Gradle's documentation on multi-project builds。
这是一个示例,带有一些额外的依赖项。只需在根文件夹中调用 gradle install
,所有内容都将被构建并放入您的本地存储库。
文件夹结构:
root
+--> build.gradle
+--> settings.gradle
+--> sdk
| +--> build.gradle
+--> example
+--> build.gradle
根/build.gradle:
allprojects {
apply plugin: 'java'
apply plugin: 'maven'
group = 'myGroup'
version = '0.1-SNAPSHOT'
}
根/settings.gradle:
include 'sdk'
include 'example'
根/sdk/build.gradle:
dependencies {
// just an example external dep.
compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
根/示例/build.gradle:
dependencies {
compile project(':sdk')
compile group:'log4j', name:'log4j', version:'1.2.16'
}
您需要将自己的库发布到本地存储库。您可以通过以下方式执行此操作:
添加 maven-publish 插件: plugins { // 您的其他插件在这里... id 'maven-publish' } 将发布部分添加到您的构建文件中: publishing { Publications { myCoolLibrary(MavenPublication) { from components.java } } }运行 gradle build publishToMavenLocal 在文档中查找更多详细信息。
gradle install
发布到本地 Maven 存储库,mavenLocal()
确保在那里查找依赖项。gradle publish
,它不会也经历install
阶段吗?apply plugin: "maven"
为 Gradle 提供“安装”任务,对吗? - 在某种程度上 - 这是从 Maven 到 Gradle 的“传递”(如果该术语适合这里)任务,对吧?考虑更新您的答案。谢谢你maven
插件已被删除。相反,您需要使用maven-publish
插件,然后使用gradle publishToMavenLocal
。