Maven 2 Gradle替代mvn安装

Maven 2 Gradle替代mvn安装,maven-2,gradle,Maven 2,Gradle,我有两个不同的项目建立在mvn。我正试图取代格拉德尔 项目1是一个SDK,项目2正在使用该SDK(示例) 在maven时代,它使用mvn安装创建工件,将整个项目添加到本地存储库中 我喜欢那样在格拉德尔工作。我喜欢project 1 build.gradle需要将其发布为gradle本地存储库,然后示例项目需要使用它 在maven中,我们进行mvn安装,将项目工件添加到.m2文件夹中,但在gradle中如何操作,以便我可以将项目工件添加到本地存储库中 有什么方法可以这样做吗?sdk/build.g

我有两个不同的项目建立在mvn。我正试图取代格拉德尔

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

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

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

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


有什么方法可以这样做吗?

sdk/build.gradle

apply plugin: "maven"

group = "foo"
version = "1.0"
repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}
示例/build.gradle

apply plugin: "maven"

group = "foo"
version = "1.0"
repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

退房

这里有一个例子,有一些额外的依赖项。只需在根文件夹中调用
gradle install
,所有内容都将生成并放入本地repo

文件夹结构:

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'
}
dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}
root/settings.gradle:

include 'sdk'
include 'example'
root/sdk/build.gradle:

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

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}
dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}
root/example/build.gradle:

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

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}
dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}

您可能正在寻找:

gradle publishToMavenLocal
提供给:

apply plugin: 'maven-publish'

请参阅:

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

  • 添加
    maven发布
    插件:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
    
  • 将发布部分添加到生成文件:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
    
  • 运行
    gradlebuildpublishtoavenlocal

    在中查找更多详细信息


  • 应用插件:“maven”和$sdk>gradle安装这将把sdk安装到.m2中,对吗?mavenLocal()还从.m2和.gradle获取信息?
    gradle安装
    发布到本地Maven repo,并且
    mavenLocal()
    确保在那里查找依赖项。gradle不是像Maven那样“面向阶段”吗?那么,如果我做一个
    gradle发布
    ,它不也会经历一个
    安装
    阶段吗?这是理想的做法吗?如果他想创建一个新的项目,例如2,它也依赖于sdk,该怎么办?现在他不得不把两个不相关的项目放在一个根项目下,仅仅因为它们共享一个依赖项?您可能会认为整个“多项目”设置也是一个Git项目。同样,这对公司/多开发人员的工作流程有害吗?即使使用maven选项,它也可以正常工作:
    gradle-Dmaven.repo.local=.m2/repository publishToAvenLocal
    这与使用
    maven
    插件的
    gradle安装有何不同?