【发布时间】:2019-09-05 07:13:33
【问题描述】:
我正在使用选择包从我的代码库中创建一个 jar。我还需要将 xml 文件移动到 META-INF 文件夹。但是虽然我的 jar 被创建了,但我没有看到这种情况发生。
<build>
<resources>
<resource>
<directory>${project.basedir}/src</directory>
<includes>
<include>jboss-ejb3.xml</include>
<include>ejb-jar.xml</include>
</includes>
<targetPath>${project.build.outputDirectory}/META-INF</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<includes>
<include>com/**/server/*EJB.class</include>
<include>com/**/common/*Remote.class</include>
</includes>
<!-- <archive> -->
<!-- <addMavenDescriptor>false</addMavenDescriptor> -->
<!-- </archive> -->
</configuration>
</plugin>
</plugins>
当我使用 Maven-resource-plugin 时,我可以看到目标文件夹中生成的 META-INF 文件夹。但在 jar 中看不到相同的内容。
【问题讨论】:
-
为什么不把它们放在
src/main/resources/META-INF中呢?然后会自动添加,不需要添加资源插件。 -
我也试过了。当我在不使用任何文件过滤器 (
) 的情况下创建 jar 时,这完全可以正常工作。但是当我过滤某些包时,META-INF 不会被移动到 jar 中。 -
当您使用 include 过滤时,您必须添加您想要包含的所有内容,包括
META-INF... 如果某些内容与 include 过滤器不匹配,它将被排除。但是为什么你首先需要一个包含过滤器呢?不应该一切都只是罐子的一部分吗? -
也试过了。但同样的结果。我使用如下。
src/main/resources/META-INF/jboss-deployment-structure.xml src/main/resources/META-INF/jboss-ejb3.xml com/**/server/*EJB.classcom/**/common/*Remote.class -
你应该有
META-INF/**而不是src/main/resources/META-INF然后它应该被包括在内。但是,为什么您首先需要一个包含过滤器。它过滤target目录而不是源。
标签: java maven maven-jar-plugin