2011-05-25 71 views
87

我有2个不同的项目建立在mvn上。我正在尝试替换为Gradle。Gradle备份到mvn安装

项目1是SDK和项目2是使用SDK(例如)

在行家它使用MVN安装这增加了整个项目到本地资源库创建工件的时间。

我喜欢在这样的gradle中工作。我喜欢项目1 build.gradle需要将其作为gradle本地存储库发布,然后示例项目需要使用它。

在maven中,我们进行mvn安装,它将项目工件添加到.m2文件夹中,但是如何在gradle中执行以便我可以将项目artefact添加到本地存储库中。

我可以这样做的任何方式?

+1

HTTP:/ /stackoverflow.com/questions/2572811/gradle-make-a-3rd-party-jar-available-to-local-gradl电子资源库 – clacke 2013-05-07 09:26:14

回答

91

SDK /的build.gradle:

apply plugin: "maven" 

group = "foo" 
version = "1.0" 

例如/的build.gradle:

repositories { 
    mavenLocal() 
} 

dependencies { 
    compile "foo:sdk:1.0" 
} 

$ SDK> gradle这个安装

$例如> gradle这个建立

+1

应用插件:“maven”和$ sdk> gradle install这会将sdk安装到.m2右边? 和 mavenLocal()也从.m2和.gradle获取信息? – Rajmahendra 2011-05-26 10:01:53

+6

'gradle install'发布到本地Maven仓库中,'mavenLocal()'确保在那里查找依赖关系。 – 2011-05-27 05:31:03

6

退房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' 
} 
+2

这是理想的做法吗?如果他想创建一个新项目,example2,它也依赖于sdk呢?现在他必须将2个不相关的项目放在根项目下,只是因为它们共享一个依赖关系? 你可能会认为这整个'多项目'设置也是1 Git项目。再说一次,这对公司/多开发者工作流程是否有害? – 2015-12-09 07:04:02