Gradle替代MVN安装


163

我在mvn上有2个不同的项目。我正在尝试替换为Gradle。

项目1是SDK,项目2使用sdk(示例)

在进行Maven时,它使用mvn install创建了工件,该工件将整个项目添加到本地存储库中。

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

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

我有办法吗?


Answers:


170

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
apply plugin:“ maven”和$ sdk> gradle install这将把sdk安装到.m2吧?而且mavenLocal()也从.m2和.gradle获取信息?
Rajmahendra

14
gradle install发布到本地Maven存储库中,并mavenLocal()确保在其中查找依赖项。
Peter Niederwieser

1
Gradle是否不像Maven那样“以相位为导向”?IOW,如果我这样做,是否gradle publish也不会经历一个install阶段?
克里斯·F


8

查看有关多项目构建的Gradle文档

这是一个示例,带有一些额外的依赖关系。只需gradle install在根文件夹中调用,便会构建所有内容并将其放入本地存储库。

资料夹结构:

root
+--> build.gradle
+--> settings.gradle
+--> sdk
|    +--> build.gradle
+--> example
     +--> build.gradle

root / build.gradle:

allprojects {
  apply plugin: 'java'
  apply plugin: 'maven'

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}

root / settings.gradle:

include 'sdk'
include 'example'

root / sdk / build.gradle:

dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}

root / example / build.gradle:

dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}

4
这是理想的做法吗?如果他想创建一个也依赖sdk的新项目example2怎么办?现在,仅因为它们共享一个依赖项,他就必须将两个不相关的项目放在一个根项目下?您可能会认为整个“多项目”设置也将是1 Git项目。同样,这对公司/多开发人员工作流程不利吗?
安东尼·楚纳德

2

您需要将自己的库发布到本地存储库。您可以通过以下方式进行操作:

  1. 添加maven-publish插件:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. 将发布部分添加到您的构建文件中:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. gradle build publishToMavenLocal

    文档中查找更多详细信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.