198

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

项目 1 是一个 SDK,项目 2 正在使用该 SDK(示例)。

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

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

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

我有什么办法可以做到吗?

4

4 回答 4

194

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
于 2011-05-25T11:47:58.013 回答
109

您可能正在寻找:

gradle publishToMavenLocal

提供:

apply plugin: 'maven-publish'

请参阅:Maven 发布插件

于 2016-03-04T18:53:54.973 回答
9

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

这是一个示例,带有一些额外的依赖项。只需调用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'
}
于 2012-11-15T12:02:36.800 回答
6

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

  1. 添加maven-publish插件:

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

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

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

于 2019-09-23T12:17:04.003 回答