提问者:小点点

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


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

1) 家长的POM.xml(报告服务):

    <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>

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

reports-application只是一个包含reports-service(ejb)的ear。

reports-service包含ServiceFramework(jar)作为它的依赖项。这个ServiceFramework包含连接到数据库以保存信息的代码。现在这个ServiceFramework可以被任何ebj(在我的项目中有很多这样的)包含,比如reports-service来保存信息。

现在,我想获取版本(和其他一些pom.xml信息,例如groupId

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

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

需求是这样的,ServiceFramework应该能够获得ejb的pom信息,该EJB已经包含它作为它的依赖项。那么,我如何从ServiceFramework获取/读取reports-service的pom信息呢?


共1个答案

匿名用户

我认为你已经非常接近解决方案了。您尝试使用过滤来“捕获”组 ID

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