Как добавить каталог в файл JAR с Maven? - PullRequest
2 голосов
/ 24 февраля 2012

Я пытаюсь упаковать веб-приложение как исполняемый файл JAR с Maven.Сборка jar-with-dependencies заботится о включении всех зависимостей, но мне все еще нужно включить src / main / webapp .

Мне удалось добавитькаталог к ​​моему JAR с пользовательской сборкой:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
                              http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>webapp</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/webapp</directory>
            <outputDirectory>/webapp</outputDirectory>
        </fileSet>
    </fileSets> 
</assembly>

И это работает, и даже возможно использовать эту сборку вместе с jar-with-dependencies .Однако последний JAR-файл содержит каталог webapp и все зависимости, но не файлы классов моего проекта.Моя сборка, очевидно, удаляет их.

Могу ли я сохранить файлы классов своего проекта в сборке?Или есть другой способ добавить каталог в JAR?

Ответы [ 3 ]

5 голосов
/ 24 февраля 2012

Моя сборка, очевидно, удаляет их

Я предполагаю, что все наоборот, не добавляет их.

Ваш классфайлы находятся внутри target / classes, и они должны находиться внутри target / webapp / WEB-INF / classes.Я предполагаю, что вам нужно другое правило, подобное этому:

<fileSet>
    <directory>target/classes</directory>
    <outputDirectory>/webapp/WEB-INF/classes</outputDirectory>
</fileSet>
1 голос
/ 24 февраля 2012

Ваши классы будут сгенерированы в $ {project.build.directory} / classes (/ target / classes, вероятно).

Следовательно, вы должны использовать эту папку в качестве исходного каталога.

Попробуйте изменить <directory>src/main/webapp</directory> на <directory>{project.build.directory}/classes</directory>

0 голосов
/ 24 февраля 2012

Кроме того, вы можете добавить следующее в свой дескриптор сборки.Это позаботится не только о размещении файлов классов, но и содержимого веб-приложения, при условии, что ваш проект maven создает веб-приложение.

...