我在mvn上有两个不同的项目构建。我正在尝试替换为Gradle。
项目1是SDK,项目2是使用sdk(示例)
在maven的时候,它使用mvn install创建工件,将整个项目添加到本地存储库中。
我喜欢像那样在gradle工作。我喜欢项目1 build.gradle需要将其作为gradle本地存储库发布,然后示例项目需要使用它。
在maven中我们做了mvn install,它将一个项目工件添加到.m2文件夹中,但是如何在gradle中这样做,以便我可以将项目artefact添加到本地存储库中。
我能做到的任何方式吗?
答案 0 :(得分:145)
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
答案 1 :(得分:51)
您可能正在寻找:
gradle publishToMavenLocal
适用于:
apply plugin: 'maven-publish'
请参阅:https://docs.gradle.org/current/userguide/publishing_maven.html
答案 2 :(得分:8)
查看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'
}
答案 3 :(得分:0)
您需要将自己的库发布到本地存储库。您可以通过以下方式做到这一点:
添加maven-publish
插件:
plugins {
// your other plugins come here...
id 'maven-publish'
}
将发布部分添加到您的构建文件中:
publishing {
publications {
myCoolLibrary(MavenPublication) {
from components.java
}
}
}
运行gradle build publishToMavenLocal
在the documentation中找到更多详细信息。