Сборка maven включает в себя текущую банку проекта в последнем zip/tar
Я использую плагин сборки maven для создания файла .tar
, содержащего несколько других файлов, зависимых банок. Все файлы копируются правильно в указанные папки в config assembly.xml
.
Я хотел бы включить исходный jar проекта в окончательный файл tar, но не видеть его в настоящее время.
Я получаю следующее сообщение, когда я выдаю assembly:single
цель:
[ПРЕДУПРЕЖДЕНИЕ] Нельзя включать артефакт проекта: com.my.newpkg.project1: jar: 0.0.3.0; он не имеет связанного файла или каталога.
После прочтения SO, кажется, добавление следующих конфигураций в pom.xml
должно добавить банку, но все равно не получить ожидаемый результат.
config в pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.my.newpkg.project1.MainClass</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
фрагмент сборки .xml
<formats>
<format>dir</format>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<fileMode>0755</fileMode>
</dependencySet>
</dependencySets>
Итак, конфигурации еще не верны? или я что-то пропустил?
Как добавить текущий куб проекта в конечный tar
Ответы
Ответ 1
В <dependencySet>
вы можете исключить текущую фразу проекта, сказав <useProjectArtifact>false</useProjectArtifact>
, но по умолчанию она истинна, поэтому она должна работать.
Из предупреждения, я думаю, вы забыли сделать mvn package
во-первых, поэтому банку недоступно в целевом каталоге.
Или выполните mvn package assembly:single
в одной команде.
В качестве альтернативы добавьте maven-assembly-plugin в свою pom и привяжите его к фазе "package", чтобы она автоматически включалась в mvn package
:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>tar-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>etc/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>