簡體   English   中英

如何像Pom一樣從Java方法獲取Maven項目版本

[英]How to Get Maven Project Version From Java Method as Like at Pom

我可以從pom文件中獲取一些變量的值,即:

${project.version}

並且我正在開發一個自定義的Maven插件,可以用表達式設置它,但是我不想要它。 我如何像pom文件一樣在Java方法中獲取它?

PS: System.getProperty(“ project.version”)不起作用,我應該找到一個通用的解決方案,因為我還將在其他事情上使用它,例如獲取竹子內部編號等。

我在Web項目中通過使用maven-war-plugin將版本注入到清單中,然后使用一些Java代碼從那里獲得它來做到這一點。 我認為沒有理由為什么非Web項目無法完成類似的工作。

例如

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
        </archive>
    </configuration>
</plugin>

然后在Java中(不包括錯誤處理):

public String getMavenVersion(ServletContext ctx) {
    String appServerHome = ctx.getRealPath("/");
    File manifestFile = new File(appServerHome, "META-INF/MANIFEST.MF");

    Manifest mf = new Manifest();

    mf.read(new FileInputStream(manifestFile));

    Attributes atts = mf.getMainAttributes();

    return atts.getValue("Implementation-Build");
}
@Component
MavenProject project;

...

    project.getVersion()

假設您正在使用Java 5批注

您是否在問是否可以同時將參數作為類或其他結構傳遞?

如果是這樣,則可以使用-D參數將它們作為系統屬性文件傳遞,並使用System.getProperties()將它們從另一端取出。 Google周圍,有很多項目支持以這種方式讀取設置,那里有很多示例代碼。

我已經創建了一個屬性文件,並在pom上指出了這一點:

<build>
    <resources>
        <resource>
            <directory>src/main/resources/</directory>
            <filtering>true</filtering>
        </resource>
 ...
</build>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM