Я не знаю, что бы в config
, но lib
и bin
легко.
Чтобы copy all dependencies to a folder просто сделать это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/dist/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Для вывода баночку в папку бин сделать это (reference page):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<finalName>${project.artifactId}</finalName>
<outputDirectory>${project.build.directory}/dist/bin</outputDirectory>
</configuration>
</plugin>
Ах, есть дополнительные требования:
Итог: я хочу сделать все это, но не хочу изменять поведение «целей» по умолчанию, например, c ompile и упаковка и т.д.
В этом случае я бы использовать профиль, чтобы включить это на:
<profile>
<id>dist</profile>
<build>
<plugins>
<!-- insert stuff from above here -->
</plugins>
</build>
</profile>
Теперь вы могли бы сделать mvn clean package -Pdist
, чтобы получить каталог Dist, и если вы не добавить профиля, вы получите поведение по умолчанию.
В принципе, все работает по-разному в maven от того, как они делают в муравье. Целей нет, есть только фазы жизненного цикла и цели плагина.
Вы можете либо выполнить фазу жизненного цикла, который будет вызывать все цели Maven плагин, которые привязаны ко всем фазам до этого один (например, если вы mvn compile
, будут выполнены следующие этапы: validate
, initialize
, generate-sources
, process-sources
, generate-resources
, process-resources
, compile
). Но нет (простого) способа определить фазу жизненного цикла с именем dist
.
Или вы можете выполнить определенную цель плагина (вы можете фактически выполнить несколько этапов и/или целей плагина). Например. вы можете написать свой собственный дистрибутив dist и вызвать его с помощью mvn dist:dist
, но я бы не рекомендовал этого, потому что вы используете существующую функциональность, а решение профиля должно быть очень хорошим.
в порядке, так как это действие будет срабатывать? Я запускаю 'mvn package'? Я хочу сделать что-то вроде 'maven dist' и сделать это (обновить это в вопросе) .. возможно? – jrharshath
+1 hm, полезно. Вопрос: должен ли я делать то, что я хочу делать в жизненном цикле пакета или в развертывании? и почему? – jrharshath
@simpatico Я думаю, это должен быть комментарий к вопросу, а не мой ответ, правильно? –