Mam projekt maven, gdzie buduję plik wojenny, ale używam również maven-jar-plugin do budowy słoika w tym samym projekcie.maven zbudować z wojny i słoika popychając dziwne artefakty do wewnętrznej repo
--DISCLAIMER-- Wiem, że nie jest to "poprawny" sposób, aby to zrobić, ale są jeszcze inne problemy podczas dzielenia tego na projekt jar i oddzielny projekt wojenny z niektórymi wtyczkami innych firm.
Widzę w tym dziwne zachowanie. Poniżej znajduje się moja struktura projektu.
warproject
-src
--main
---webapp
----WEB-INF
-----web.xml
---java
----com.test.myclass
-----test.java
-pom.xml
Kiedy budować ten projekt, i uzyskać prawidłowy wojnę i plik jar w moim katalogu docelowego, jednak w moim lokalnym .m2 repo coś dziwnego dzieje. Plik wojny, który jest zainstalowany, nosi nazwę poprawnie war-jar-0.0.1-SNAPSHOT.war, jednak zawartość tego pliku jest zawartością mojego pliku JAR. Dzieje się tak również, gdy robię odwrotność. tj. jeśli skonfiguruję mój projekt do zbudowania słoika i użyjemy wtyczki maven-war do zbudowania wojny, archiwa w moim katalogu docelowym są poprawne, ale moje lokalne repozytorium ma plik jar z zawartością mojego pliku wojennego. Poniżej znajduje się plik pom, którego używam.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>war-jar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<jarName>${project.artifactId}-${project.version}-client</jarName>
</configuration>
<executions>
<execution>
<id>make-a-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
Wyjście konsoli jest następujące, pokazuje, że jar jest przesyłany jako wojna.
Installing /home/me/work/src/war-jar/target/war-jar-0.0.1-SNAPSHOT.jar to /home/me/.m2/repository/com/test/war-jar/0.0.1-SNAPSHOT/war-jar-0.0.1-SNAPSHOT.war
--update dostałem tej pracy, ale musiałem zmienić fazę mojego „make-a-jar” wykonanie instalacji z pakietu. Działa to dobrze, a prawidłowe artefakty są przesyłane, ale wciąż nie rozumiem, dlaczego to robi różnicę. Oczywiście artefakt jest generowany w innej fazie cyklu życia, a zatem nie występuje w czasie oryginalnej instalacji dla projektu, dlatego niewłaściwy plik nie jest przesyłany. To wydaje się być "hack" i chciałbym zrozumieć, dlaczego tak się zachowuje.
Jakiej komendy używasz do budowania słoika/wojny? instalacja mvn? –
Tak zainstalować mvn na projekcie. – broschb