我有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信息?
答案 0 :(得分:1)
我认为你很接近解决方案。您尝试使用filtering
来“捕获”groupId&amp; artifactId&amp; ServiceFramework
中的版本(又名GAV)。相反,在filtering
中使用reports-service
,抓住GAV并写入某个资源文件,比方说x.properties
。
位于ServiceFramework中的Java代码应该从类路径加载资源x.properties并读取您想要的所有内容