如何使用Gradle将源代码发布到本地maven资源库?

jjjwad0x  于 2022-11-14  发布在  Maven
关注(0)|答案(5)|浏览(322)

我正在开发两个相关的项目。其中一个是“helper”项目,另一个是“main”项目。我不断更新“main”,但有时我也会更新“helper”项目。之后,我在gradle的maven插件中运行install目标,并在本地maven存储库中获取jar。之后,我在“main”项目中进行gradle更新,并更新了链接的jar。
有两个问题。
1)如果使用maven插件,那么如何将源代码发布到本地maven repo中呢?
2)我是否可以在没有maven插件的情况下,仅使用Gradle进行类似操作?

kupeojn6

kupeojn61#

使用“maven-publish”插件可以轻松发布源代码:

apply plugin: "maven-publish"

task sourceJar(type: Jar) {
  from sourceSets.main.allJava
}

publishing {
    publications {
        mavenJava(MavenPublication) {
          from components.java

          artifact sourceJar {
            classifier "sources"
          }
        }
     }
}

然后发布到本地maven run:gradle publishToMavenLocal
更多信息,请参阅以下文档:https://docs.gradle.org/current/userguide/publishing_maven.html#gsc.tab=0

edqdpe6u

edqdpe6u2#

我认为一个更简洁的解决方案是使用maven-plugin,它提供了install任务,与Maven的install任务相匹配。更新您的build.gradle,使其包含以下内容:

apply plugin: 'maven'

然后,要发布(例如安装)到Maven本地资源库,请运行:gradle install./gradlew install。另请参阅此解决方案:Gradle alternate to mvn install
注意:当前的Gradle文档(自v4.9起)称maven-plugin是“旧Maven插件”(但并未弃用)。https://docs.gradle.org/current/userguide/maven_plugin.html
我认为这是目前解决这个问题最简单的办法。

rxztt3cl

rxztt3cl3#

也许你更适合多模块的项目,那么就根本不需要 install
讨论的主题

mnemlml8

mnemlml84#

我通过简单地将以下代码添加到构建文件中来做到这一点:

java {    
    withSourcesJar()
}
e4eetjau

e4eetjau5#

以下是Gradle 7.5.1的替代框架,Java 17将生成javadocsources jar沿着源代码。

构建.gradle

plugins {
    id 'org.gradle.java'
    id 'org.gradle.maven-publish'
}

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
    withJavadocJar()
    withSourcesJar()
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = 'your-group'
            artifactId = 'your-artifact'
            version = "0.0.1"
            from components.java
        }
    }
    repositories {
        mavenLocal()
    }
}

出版

添加--info以了解有关发布的更多详细信息。

./gradlew --info publishToMavenLocal

输出

~/.m2/repository $ tree your-group/
your-group/
└── your-artifact
    ├── 0.0.1
    │   ├── your-artifact-0.0.1-javadoc.jar
    │   ├── your-artifact-0.0.1-sources.jar
    │   ├── your-artifact-0.0.1.jar
    │   ├── your-artifact-0.0.1.module
    │   └── your-artifact-0.0.1.pom
    └── maven-metadata-local.xml

相关问题