当前位置: 首页 > 知识库问答 >
问题:

使用Gradle-Artifactory插件发布子项目

蓝苗宣
2023-03-14

我有以下多项目分级建设:

myapp/
    myapp-client/
        build.gradle
        src/** (omitted for brevity)
    myapp-shared/
        build.gradle
        src/** (omitted for brevity)
    myapp-server
        build.gradle
        src/** (omitted for brevity)
    build.gradle
    settings.gradle
subprojects {
    apply plugin: 'groovy'
    sourceCompatibility = '1.7'
    targetCompatibility = '1.7'
    [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

    repositories {
        mavenCentral()
        maven {
            // My local/private Artifactory
            url "http://localhost:8081/artifactory/myapp-snapshots"
        }
    }

    dependencies {
        compile (
            'org.codehaus.groovy:groovy-all:2.3.7'
        )
    }
}

3个子项目分级文件中的每一个目前都非常简单:

dependencies {
    compile (
        'org.apache.commons:commons-lang3:3.3.2'
    )
}

以下是我想要达到的目标:

  • 当我从父myapp目录运行gradle clean build-pversion=0.1.5时,我希望所有三个子项目都使用0.1.5版本生成;因此,myapp-client-0.1.5.jarmyapp-shared-0.1.5.jarmyapp-server-0.1.5.jar。但是,当前我的构建已经执行此操作...
  • 如果客户端和共享JAR成功构建,我还希望将它们发布到我的私有Artifactory repo中。(我不希望发布服务器JAR)。
buildscript {
    repositories {
        maven {
            url 'http://localhost:8081/artifactory/plugins-release'
            credentials {
                username = "admin"
                password = "12345"
            }
            name = "maven-main-cache"
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
    }
}

apply plugin: 'maven-publish'
apply plugin: "com.jfrog.artifactory"

repositories {
    add buildscript.repositories.getByName("maven-main-cache")
    maven {
        url "http://localhost:8081/artifactory/myapp-snapshots"
    }
}

artifactory {
    contextUrl = "http://localhost:8081/artifactory"
    publish {
        repository {
            repoKey = 'myapp-snapshots'
            username = "admin"
            password = "12345"
            maven = true
        }
        defaults {
            publications ('mavenJava')
        }
    }
}

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

我的问题是:如何将这个片段添加到我的项目中,这样从父目录运行gradle clean build成功后,就会生成发布到ArtiFactory的客户端和共享JAR?

虽然不是很理想,但如果不可能一下子做到这一切,我愿意把出版作为一个单独的第二步。有什么想法吗?

共有1个答案

胡浩瀚
2023-03-14

使用ArtiFactory插件是正确的方法。您需要将其应用于AllProjects,并使用ArtifactoryPublish.skip=true禁用顶级项目上的部署。您可以在这里找到一个与您的项目非常相似的完全工作的示例。

默认情况下,build不依赖于artifactorypublish,因此需要运行gradle build artifactorypublish来上载JAR。原因是您可能想要运行大量的构建,直到您决定上传一些东西。您可以通过将build配置为依赖于ArtifactoryPublish来建立依赖关系:

build(dependsOn: 'artifactoryPublish')
 类似资料:
  • 我有一个非常基本的Gradle构建文件: 这是通过詹金斯执行的,看起来工作正常: 归档工件:[DefaultPublishArtifact_装饰模块-0.0.post0.dev6 n4c62094-py2.7:egg:egg:null] [buildinfo]属性文件位于“/tmp/buildInfo65481565498521”。财产 : artifactoryPublish 正在将生成描述符部

  • 我有一个多项目的gradle构建,其中一个子项目是应用Artifactory插件(版本4.2.0),并配置contextUrl和resolve repoKey。 它设置一个简单的配置和依赖项,然后有一个复制任务来检索依赖项作为zip文件并将其解压缩到目录中。 然而,当复制任务运行时,我得到下面的错误。我做错了什么?这是Artifactory插件或gradle的问题,还是。。。? 问题似乎与该项目是

  • null 当我运行./gradlew artifactoryPublish时,它将记录: 尝试从其他生成加载插件。Gradle: 带设置。分级: 导致此错误: 我希望在运行ArtiFactoryPublish时,将publishToMavenLocal创建的所有工件发布到Artifactory。如果artifactoryPublish是错误的工具,我愿意接受它的替代方法。 如何将Gradle插件发

  • 我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(

  • 我正在尝试将jar文件(gradle项目的输出)发布到jFrog/artiFactory。当我执行或时,该项目是成功的。我还在控制台上看到下的artiFactory中浏览它,但当我去artiFactory时,什么都没有。我尝试按照jFrog/artiFactory留档,一些关于stackoverflow的问题,比如这个和这个。以下是我build.gradle的片段 我不知道我错过了什么。有人能告诉

  • 我试图在Jenkins管道中使用JenkinsArtiFactory Plugin-Release Management功能,但我在文档中没有看到任何管道步骤(https://www.jfrog.com/confluence/display/RTF/Declarative管道语法)。 我正在寻找管道步骤,无论是脚本化/声明性步骤"阶段Maven发布构建"。PFA的截图,可以通过正常的maven工作