我有2个不同的项目建立在mvn。我正在尝试替换到Gradle。

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

在maven的时候,它使用mvn安装创建工件,将整个项目添加到本地存储库。

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

在maven中,我们做mvn安装,将项目工件添加到.m2文件夹中,但如何在gradle中做,所以我可以将项目工件添加到本地存储库中。

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


当前回答

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

下面是一个带有一些额外依赖项的示例。只要在根文件夹中调用gradle install,所有的都将被构建并放到本地的repo中。

文件夹结构:

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'
}

其他回答

sdk / build.gradle:

apply plugin: "maven"

group = "foo"
version = "1.0"

例子/ build.gradle:

repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

$sdk> gradle install

$example> gradle build

您需要将自己的库发布到本地存储库。你可以通过以下方式做到这一点:

添加maven-publish插件: 插件{ //你的其他插件在这里… id“maven-publish” } 将发布部分添加到构建文件中: 出版{ 出版物{ myCoolLibrary (MavenPublication) { 从components.java } } } 运行gradle build publishToMavenLocal 在文档中可以找到更多细节。

你可能在寻找:

gradle publishToMavenLocal

build.gradle:

plugins {
    // other plugins
    id 'maven-publish'
}


publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}

参见:Maven发布插件

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

下面是一个带有一些额外依赖项的示例。只要在根文件夹中调用gradle install,所有的都将被构建并放到本地的repo中。

文件夹结构:

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'
}