【问题标题】:How to retrieve the version,artifactId,package of the artifact built on Hudson如何检索基于 Hudson 构建的工件的版本、工件 ID、包
【发布时间】:2011-04-26 04:33:41
【问题描述】:

构建工件后,我正在执行一个脚本作为构建后操作来部署工件。所以我试图读取它的构建位置。Hudson 中可用的环境变量没有给我足够的关于工件的 artifactId、Version、PackageType 的信息。

那么任何人都可以帮助我了解如何获取这些值....

提前致谢

【问题讨论】:

    标签: shell maven continuous-integration hudson artifacts


    【解决方案1】:

    Maven 构建的所有工件都包含包含此信息的 META-INF 条目。将它们读取为 JarFile:

    JarFile jf = new JarFile(path/to/artifact);
    JarEntry propsEntry = jf.getJarEntry("META-INF/maven/pom.properties");
    Properties props = new Properties();
    props.load(jf.getInputStream(propsEntry));
    // retrieve the values:
    String groupId = props.get("groupId");
    String artifactId = props.get("artifactId");
    String version = props.get("version");
    

    【讨论】:

    • 感谢您的回答,我的问题是 Hudson 如何读取此值?即,一旦您构建了工件,它将被存档在某个位置,例如 ${BUILD_URL}artifact/hudson_${ NODE_NAME}_{JOBNAME}/com/xyz/target/ {ArtifactId}-{version}-{packagetype}。所以我需要提供 artifactId、version、packagetype 来获取工件。我不希望用户输入 AVP 值,而是希望从 HUDSON 配置文件中读取它。
    • 哦,对不起,你以为你在写一个 Hudson 插件。但是,在 shell 脚本中,您必须执行几乎相同的操作:从 JAR / WAR 中解压缩 pom.properties 文件并读取它。但我真的不能帮助你太多的细节。尝试将shellbash 添加到问题的标签
    • 我的问题是 Hudson 如何读取此值?即,一旦您构建了工件,它将被存档在某个位置,例如 ${BUILD_URL}artifact/hudson_${NODE_NAME}_{JOBNAME }/com/xyz/target/ {ArtifactId}-{version}-{packagetype}。所以我需要提供 artifactId、version、packagetype 来获取工件。我不希望用户输入 AVP 值,而是希望从 HUDSON 配置文件中读取它。
    【解决方案2】:

    我可能完全误解了你的问题,但有理由不通过文件系统和WORKSPACE 环境变量${WORKSPACE}/target/... 获取工件

    【讨论】:

    • 感谢您的回复,是的,我可以使用 ${WORKSPACE}/target/ 代替 ${BUILD_URL}artifact/hudson_${NODE_NAME}_{JOBNAME}/com/xyz/target/跨度>
    • 在我的工件的 POM 中考虑我已经提到了这个细节 com.xyzsampleapplicationwar1.1 .1 所以当我进行 Hudson 构建时,生成的 war 文件将是 {WORKSPACE}/target/sampleapplication-1.1.1-war 我的问题是,除非用户进入工作区,否则他不会知道生成的war文件(即sampleapplication-1.1.1-war)那么有什么办法可以得到生成的war文件({artfactId}-{version}-{packaging})的名称吗??
    【解决方案3】:

    您可以使用http://${BUILD_URL}/job/${JOBNAME}/${BUILDNUMBER}/api/xml?xpath=//artifact/fileName/text() 并将其设置为环境变量。这仅在您有 1 个工件时才有效,如果您有更多,则需要进行一些额外的解析。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 2011-07-13
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多