Maven: включите файлы в META-INF JAR

Я использую Maven для создания проекта Java, и у меня есть пара файлов, CHANGELOG а также LICENSE, что я хотел бы скопировать в META-INF каталог внутри файла JAR.

Пока что у меня работает следующее:

<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, но больше нигде. Есть ли способ сделать это?

4 ответа

Вам не нужно указывать какую-либо пользовательскую конфигурацию maven для удовлетворения ваших потребностей.
В src/main/resourcesсоздавая просто META-INF папку и разместите ваши файлы здесь.
Таким образом, вы можете найти их в META-INF папка встроенного JAR.

Кроме того, вы должны удалить <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>

Измените свой pom, добавив webResources

      <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

Вывод примера войны

Если вы хотите добавить свои файлы при созданииWAR, вы можете создать свой собственныйMETA-INFпапка вwebappкаталог.

      src/main/webapp/META-INF
Другие вопросы по тегам