【问题标题】:Mercurial ChangeSet In OSGi Bundle MANIFEST with MavenOSGi Bundle MANIFEST 中的 Mercurial ChangeSet 与 Maven
【发布时间】:2012-08-30 02:02:43
【问题描述】:

我正在尝试使用 Maven 在我的 MANIFEST.MF 文件的 OSGi 捆绑包中设置 Mercurial changeSetchangeSetDate

我已将buldnumber-maven-plugin 添加到我的pom.xml

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>hgchangeset</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <doCheck>false</doCheck>
        <doUpdate>true</doUpdate>
    </configuration>
</plugin>

我的捆绑插件看起来像这样:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.7</version>
    <extensions>true</extensions>
    <configuration>
        <archive>
            <manifestEntries>
                <Build-Change-Set>${changeSet}</Build-Change-Set>
                <Build-Change-Set-Date>${changeSetDate}</Build-Change-Set-Date>
                <Build-Location>${basedir}</Build-Location>
                <Build-Machine>${env.COMPUTERNAME}</Build-Machine>
                <Build-Date>${maven.build.timestamp}</Build-Date>
            </manifestEntries>
        </archive>
        <instructions>
            <!-- All imports, exports, etc... -->
        </instructions>
    </configuration>
</plugin>

当我执行install 目标时,我看到Maven 输出:

[INFO] --- buildnumber-maven-plugin:1.0:hgchangeset (default) @ esb-security ---
[INFO] Setting Mercurial Changeset: 6524595b0389+
[INFO] Setting Mercurial Changeset Date: 2012-09-05 11:38 +0100

但在我的MANIFEST.MF 中,我得到:

Build-Change-Set: ${changeSet}
Build-Change-Set-Date: ${changeSetDate}

不包括变更集和变更集数据的值。也许有人知道问题出在哪里?

【问题讨论】:

  • 没有人知道问题出在哪里吗?我坚持这一点。请帮忙。
  • 您是否在启用调试输出的情况下运行此程序?那里有什么东西吗?
  • 没有。我与问题无关。我看到 maven 正确打印变更集和变更集日期,但在最终清单中我得到: Build-Change-Set: ${changeSet} Build-Change-Set-Date: ${changeSetDate}

标签: maven mercurial osgi maven-plugin buildnumber-maven-plugin


【解决方案1】:

除非 maven-bundle-plugin 明确支持 ${changeSet} 等表达式变量,否则在此插件执行之前,Maven 不会解析它们。因此,您可能必须在 process-resources 阶段之前使用单独执行 manifest 任务绑定,然后使用 Maven 的资源过滤支持对生成的 manifest 进行后处理并替换 maven-bundle-plugin 设置的那些变量。

【讨论】:

  • 你能举个例子吗?
【解决方案2】:

也许如果您将 hgchangeset 目标的阶段更改为“初始化”,它将在 Manifest 文件创建之前发生?

或者,您可以在资源文件夹中创建一个存根 MF 文件并使用过滤来进行变量替换,尽管 felix 应该能够为您执行此操作。

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 2011-06-18
    • 2011-05-21
    • 2016-07-20
    • 2017-01-02
    • 2013-01-12
    • 2014-02-11
    • 2011-07-28
    • 2022-05-11
    相关资源
    最近更新 更多