【问题标题】:How to read mule project version?如何阅读 mule 项目版本?
【发布时间】:2015-01-12 11:29:47
【问题描述】:

我需要阅读 mule 项目版本并将其返回给客户。下面是我的 mavenised mule 项目的 pom.xml 文件。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>testproject</artifactId>
    <packaging>mule</packaging>
    <version>1.0.0-SNAPSHOT</version>

.
.
.
</project>

我想从 pom 文件中读取以上版本值(1.0.0-SNAPSHOT)。

有人可以帮忙吗?我怎样才能以推荐的方式获得项目版本。

提前致谢。

【问题讨论】:

    标签: java maven mule


    【解决方案1】:

    您可以在过滤后的变量中使用 ${pom.version},以便在属性文件中检索它。

    想象一个文件 src/main/resources/version.properties 包含: 版本=${pom.version}

    然后你可以使用一个属性对象:

    Properties p = new Properties();
    p.load(getClass().getResourceAsStream("/version.properties");
    final String version = p.getProperty("version");
    

    【讨论】:

    • 嗨,我已经尝试过了,但我得到了不同的值“20030108”。我没有得到实际的项目版本。我在 pom 文件的 元素中添加了以下过滤器。 src/main/resourcestrue
    • 知道为什么我的版本是“20030108”吗?
    • 我可以在 classes/version.properties version=1.0.0-SNAPSHOT 中看到。但是当你读到'版本'属性时,你说它的到来是'20030108'。我不明白出了什么问题。
    • 可能是因为类路径中存在另一个 /version.properties 并覆盖了您的文件。尝试使用不同的文件名,例如 /my/version.properties 或 /my-version.properties
    【解决方案2】:

    如果您使用的是 Maven,我想游览应用程序将在其名称中包含版本,例如 mule-app-1.0.0-SNAPSHOT。使用 Mule 表达式语言提取应用程序名称 (app.name),如下所述:http://www.mulesoft.org/documentation/display/current/Mule%2BExpression%2BLanguage 然后使用正则表达式从名称中提取版本,并使用 http 入站端点返回值。

    【讨论】:

      【解决方案3】:

      你可以访问 pom 文件吗?还是来自 mule 的 .zip 文件?

      如果你可以访问 pom.xml 文件很容易得到版本。

      您需要解组功能:

      1.- 使用 groupId、artifactId 等和 version 属性(当然是 setter 和 getter)创建一个名为“project”的 bean。

      2.- 使用解组功能将 pom.xml 解析为项目 bean:

      http://lstierneyltd.com/blog/development/examples/java-to-xml-xml-to-java-marshalling-and-unmarshalling/

      JAXBContext jc = JAXBContext.newInstance(Project.class);
      Unmarshaller u = jc.createUnmarshaller();
      File f = new File("pom.xml");
      Project project = (Project) u.unmarshal(f);
      

      3.- 只需获取版本属性:

      System.out.println(project.getVersion());
      

      问候。

      【讨论】:

        猜你喜欢
        • 2020-09-27
        • 2021-12-06
        • 2021-02-03
        • 1970-01-01
        • 1970-01-01
        • 2020-09-21
        • 2021-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多