Maven:包含 JAR 的 META-INF 中的文件

问题描述 投票:0回答:5

我正在使用 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 文件中,而不是其他地方。有办法做到这一点吗?

java maven jar maven-jar-plugin meta-inf
5个回答
21
投票

您不需要指定任何自定义 Maven 配置来满足您的需求。

src/main/resources
中,只需创建一个
META-INF
文件夹并将文件放在此处。
这样,你就可以在构建的JAR的
META-INF
文件夹中找到它们。

此外,您应该删除在

<resource>
中添加的
pom.xml
元素,因为它将默认资源文件夹更改为项目的根目录,而不是默认的
src/main/resources


3
投票

如果您想将文件和目录添加到 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>

1
投票

通过添加 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

战争示例输出


0
投票

如果您想在创建

META-INF
时将文件添加到
WAR
,您可以在
META-INF
目录中创建自己的
webapp
文件夹。

src/main/webapp/META-INF

0
投票

我尝试添加 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

然后应用程序就可以正常工作了。 现在我只需要找到一种方法将这个缺失的行添加到该文件中。

© www.soinside.com 2019 - 2024. All rights reserved.