Почему «пакет» цели Maven включает ресурсы в банке, а цель «jar: jar» - нет? - PullRequest
1 голос
/ 07 мая 2010

когда я упаковываю свой проект с помощью «пакета» цели Maven, ресурсы также включаются. Они изначально расположены в каталоге "src / main / resources". Поскольку я хочу создать исполняемый файл jar и добавить путь к классам в манифест, я использую maven-jar-plugin.

Я настроил его следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>at.program.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Почему файл jar, созданный с помощью "jar: jar", также не включает мои ресурсы. Насколько мне известно, он должен использовать те же каталоги, что и цель "package" (которые в моем случае унаследованы от Maven Super POM).

Ответы [ 3 ]

10 голосов
/ 07 мая 2010

jar:jar цель плагина Maven JAR используется для " построения JAR из текущего проекта " и делает только одно: упаковывает содержимое target/classes в JAR в каталоге target, и все. Итак, когда вы запускаете mvn jar:jar, конфигурация плагина в вашем pom используется , но jar:jar не сделает больше вещей, чем я упомянул. Если target/classes пусто или не существует, никакие классы или ресурсы не будут упакованы в полученный JAR.

package фаза - это фаза жизненного цикла сборки , и когда вы вызываете mvn package, все фазы до package будут выполнены (process-resources, compile, process-test-resources и т. Д.) И активирует цели плагина , связанные с этими фазами . Так, для проекта с <packaging> типа jar, jar:jar связан с package и будет выполняться во время фазы package, но до этого цели, связанные с фазами, предшествующими package, будут быть запущенным, включая тот, который копирует ресурсы в target/classes.

0 голосов
/ 07 мая 2010

Как я выяснил, maven-jar-plugin автоматически привязывается к цели пакета, когда для упаковки проекта установлено значение "jar". Таким образом, цель «package» делает все, что я хочу, включая добавление classpath к манифесту и установку основного класса.

0 голосов
/ 07 мая 2010

Вы можете попробовать использовать maven.jar.includes в своей конфигурации плагина jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...