从jar文件中读取maven ear / ejb的pom.xml的属性,该文件是maven依赖项的一部分

时间:2016-08-13 17:19:31

标签: spring maven maven-plugin

我有maven jar文件,它作为依赖包含在maven ejb中。下面解释所有项目结构:

1)父级的pom.xml(reports-service):

    <groupId>com.xxx.pdf.reports</groupId>
    <artifactId>reports-parent</artifactId>
    <version>2.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Reports - Parent</name>
    <modules>
        <module>reports-application</module>
        <module>reports-service</module>
    </modules>

2) pom.xml of ear(reports-application) :
  <parent>
    <groupId>com.xxx.pdf.reports</groupId>
    <artifactId>reports-parent</artifactId>
    <version>2.0.0-SNAPSHOT</version>
  </parent>
  <artifactId>reports-application</artifactId> 
  <packaging>ear</packaging> 
  <dependencies>
        <dependency>
            <groupId>com.xxx.pdf.reports</groupId>
            <artifactId>reports-service</artifactId>
            <version>${project.version}</version>
            <type>ejb</type>
        </dependency>
  </dependencies>

3) pom.xml of ejb(reports-service) :    
    <parent>
        <groupId>com.xxx.pdf.reports</groupId>
        <artifactId>reports-parent</artifactId>
        <version>2.0.0-SNAPSHOT</version>
    </parent>
    <artifactId>reports-service</artifactId>
    <packaging>ejb</packaging>
    <dependencies>
        <dependency>
            <groupId>com.xxx.common.serviceframework</groupId>
            <artifactId>ServiceFramework</artifactId>
            <version>1.1.0-SNAPSHOT</version>
        </dependency>
        .......other dependencies..........
        ................

4) pom.xml of jar(ServiceFramework) :
    <groupId>com.xxx.common.serviceframework</groupId>
    <artifactId>ServiceFramework</artifactId>
    <version>1.0.0-SNAPSHOT</version>

如上所述,reports-service是构建报告应用程序和报告服务的父pom。这两者都是它的模块。

报告 - 应用程序只是一个包含report-service(ejb)的耳朵。

reports-service包含ServiceFramework(jar)作为其依赖项。此ServiceFramework包含连接到数据库以保存信息的代码。现在,这个ServiceFramework可以包含在任何ebj(我的项目中有很多这样的)中,例如用于保存信息的报告服务。

现在,我想从ServiceFramework中的java代码获取report-service的版本(以及其他一些pom.xml信息,如groupId&amp;&amp; artifactId)。我尝试使用maven资源插件。

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

但它给了我ServiceFramework的版本,因为选择该版本的java代码在ServiceFramework jar中。我想要使​​用ServiceFramework jar的应用程序版本。我尝试了所有方法,但所有方法都给了我ServiceFramework的版本。

要求是ServiceFramework应该能够获得ejb的pom信息,ejb已将其作为依赖项包含在内。那么,我如何从ServiceFramework获取/读取报告服务的pom信息?

1 个答案:

答案 0 :(得分:1)

我认为你很接近解决方案。您尝试使用filtering来“捕获”groupId&amp; artifactId&amp; ServiceFramework中的版本(又名GAV)。相反,在filtering中使用reports-service,抓住GAV并写入某个资源文件,比方说x.properties

位于ServiceFramework中的Java代码应该从类路径加载资源x.properties并读取您想要的所有内容