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

从Jenkins发布到Artifactory时如何指定模块名称

别旻
2023-03-14

我正在使用这里记录的gradle artiFactory发布插件:http://www.jfrog.com/confluence/display/RTF/Gradle1.6 Publishing artiFactory Plugin

我使用的标准配置与文档中的配置完全相同。

当我从命令行运行gradle PublishartiFactory任务时,我得到的输出如下所示。即它部署到我正确的模块名称。

Deploying artifact: http://<my server>/artifactory/libs-snapshot-local/<my actual module name>/web/0.1-SNAPSHOT/web-0.1-SNAPSHOT.war

当我配置Jenkins使用相同的gradle构建文件运行gradle publishArtifactory任务时,我得到如下输出。也就是说,它使用Jenkins构建作为模块名。

Deploying artifact: http://artifactory01.bcinfra.net:8081/artifactory/libs-snapshot-local/<the name of the jenkins build>/web/0.1-SNAPSHOT/web-0.1-SNAPSHOT.war

关于如何防止工件插件使用Jenkins构建名称作为模块名称的任何想法?

共有2个答案

沙岳
2023-03-14

您还可以让Gradle单独向Artifactory发布,而不需要Jenkins中的Artifactory插件。

这样,您就可以使用artifactId“您的工件名称”设置工件的名称,而无需按照Rene Groeschke的建议更改项目名称。

这是我的publish.gradle演示了这一点:

buildscript {
  repositories {
    jcenter() 
  }
  dependencies {
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
  }
}
// Because this is a helper script that's sourced in from a build.gradle, we can't use the ID of external plugins
// We either use the full class name of the plugin without quotes or an init script: http://www.gradle.org/docs/current/userguide/init_scripts.html
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin

// Pack the sources into a jar
task sourceJar(type: Jar) {
  from sourceSets.main.allSource; classifier = "sources" 
}

// Pack the Javadoc into a jar
task javadocJar(type: Jar) {
  from javadoc.outputs.files; classifier = "javadoc" 
}

apply plugin: "maven-publish"

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

      // Set the base name of the artifacts
      artifactId "your artifact name"

      artifact jar
      artifact sourceJar
      artifact javadocJar
    }
  }
}

artifactory {
  contextUrl = "http://localhost:8081/artifactory"

    publish {
      // Publish these artifacts
      defaults{ publications ("mavenJava") }

      repository {
        repoKey = "libs-release-local"
        // Provide credentials like this:
        //-Partifactory.publish.password=yourPassword
        //-Partifactory.publish.username=yourUsername
      }
    }
  resolve {
    repository {
      repoKey = "libs-release"
    }
  }
}

您可以在构建中使用此脚本。gradle通过应用from:“path/to/publish.gradle”并这样调用它:

./gradlew artifactoryPublish -Partifactory.publish.username="yourUsername" -Partifactory.publish.password="yourPassword"
史钊
2023-03-14

用于上传的模块名称源自gradle项目名称。gradle项目名称的默认值取自项目文件夹名称。我怀疑在jenkins作业中,您将代码签出到名为构建作业的文件夹中。这就是为什么默认使用此文件夹名称作为项目名称的原因。

最干净的解决方案是在gradle中显式设置项目名称。

因此,您需要设置。项目根文件夹中包含项目名称的渐变文件:

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

  • 我有一个Jenkins的自由式构建,基于一个使用SBT的Scala项目。我正试图使用Jenkins艺术工厂插件将生成的工件发布到艺术工厂存储库,特别是托管在artifactoryonline.com.的存储库。然而,我正在努力寻找一个合理的配置。我倾向于怀疑我错过了什么,但我无计可施,我找到的留档似乎都没有详细介绍这个用例,我厌倦了浏览艺术工厂插件源代码。非常感谢任何帮助。 情况如下。我想: 使用

  • 我试图用gradle设置工件(APK/AAR文件)构建过程,类似于我使用Maven时所使用的方法。 build.gradle文件: gradle.properties文件:

  • 我正在尝试在 Jenkins 中配置以下工作流模式: 构建战争文件 我似乎错过了一些东西。应用程序的组件(jar 文件等)似乎在目标版本/快照目录中很好地部署到 Artifactory 中。然而,最终的WAR神器似乎并没有存储在Artifactory中,尽管Jenkins清楚地指出该神器是成功构建的。 我使用的是标准目标:全新安装。我也尝试过(没有改变):全新安装重新打包 我安装了Jenkins的

  • 我需要通过Postman调用Jenkins作业的API。此作业需要参数(主机、详细信息和PMSP)。 Auth使用Jenkins令牌工作,并使用头内容类型:application/json。 > 我试图调用endpointhttps://jenkins_server/作业/job_name/build/api/json,将以下正文添加到请求中,但结果是没有提交任何内容,作业不运行。 我试着呼叫en

  • 如何发布npm模块 那么我们来发布一个吧,顺便学习一下如何发布npm模块 登陆npm 发布 ➜ require-dictory git:(master) ✗ nrm use npm Registry has been set to: https://registry.npmjs.org/ ➜ require-dictory git:(master) ✗ npm login Usern