我正在使用 Maven 构建一个 Java 项目,我有几个文件,
CHANGELOG
和 LICENSE
,我想将它们复制到 JAR 文件内的 META-INF
目录。
到目前为止,我所做的工作如下:
<build>
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>CHANGELOG</include>
<include>LICENSE</include>
</includes>
<targetPath>META-INF</targetPath>
</resource>
</resources>
<plugins>
...
但是编译时也会将这两个文件复制到
classes/META-INF
目录中。
所以我希望这些文件包含在 JAR 文件中,而不是其他地方。有办法做到这一点吗?
您不需要指定任何自定义 Maven 配置来满足您的需求。
在
src/main/resources
中,只需创建一个 META-INF
文件夹并将文件放在此处。META-INF
文件夹中找到它们。 此外,您应该删除在
<resource>
中添加的 pom.xml
元素,因为它将默认资源文件夹更改为项目的根目录,而不是默认的 src/main/resources
。
如果您想将文件和目录添加到 META-INF 文件夹,请在 pom.xml 中使用此代码
<build>
<finalName>CustomJsfComponents</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**.xml</include>
<include>**resources/**</include>
</includes>
<targetPath>META-INF</targetPath>
</resource>
</resources>
</build>
通过添加 webResources
修改您的 pom<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>target/classes/META-INF/</directory>
<includes>
<include>*.*</include>
</includes>
<targetPath>META-INF/</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
考虑在
中找到 config.properties 文件src / main / resources / META-INF / config.properties
如果您想在创建
META-INF
时将文件添加到 WAR
,您可以在 META-INF
目录中创建自己的 webapp
文件夹。
src/main/webapp/META-INF
我尝试添加 META-INF/resources/org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable 内容如下:
org.glassfish.jersey.jaxb.internal.JaxbAutoDiscoverable
但是做了jar包之后,仍然只包含:
org.glassfish.jersey.server.wadl.internal.WadlAutoDiscoverable
org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable
然后我手动编辑 jar,使其包含:
org.glassfish.jersey.server.wadl.internal.WadlAutoDiscoverable
org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable
org.glassfish.jersey.jaxb.internal.JaxbAutoDiscoverable
然后应用程序就可以正常工作了。 现在我只需要找到一种方法将这个缺失的行添加到该文件中。