21 grudnia 2007

Zmiana rozszerzenia pliku jar w Maven2?

Pojawiła się kwestia do rozwiązania, w której plik wynikowy tworzony przez Maven2 za pomocą wtyczki maven-jar-plugin powinien mieć inne rozszerzenie niż jar.

Jaki jest przypadek użycia, zapytasz? Załóżmy, że korzystam z narzędzia, dla którego jedynym słusznym rozszerzeniem jest xyz. W jaki sposób najmniejszym wysiłkiem utworzyć plik o zadanym rozszerzeniu nie łamiąc zasad rządzących Maven2 i wciąż móc korzystać z pozostałych wtyczek?

Jedyne, co przyszło mi do głowy to skorzystanie z wtyczki - maven-antrun-plugin. Wykonanie polecenia mvn package działa, ale mvn install już nie. Czy są inne sposoby rozwiązania tej kwestii? Skorzystanie z dedykowanej wtyczki? Dedykowany packaging z własną konfiguracją wtyczek?

<properties>
<nazwaPlikuWynikowego>${project.build.directory}/${artifactId}-${version}</nazwaPlikuWynikowego>
<rozszerzenie>xyz</rozszerzenie>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>package</id>
<phase>package</phase>
<configuration>
<tasks>
<move file="${nazwaPlikuWynikowego}.jar" tofile="${nazwaPlikuWynikowego}.${rozszerzenie}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

W źródłach wtyczki maven-jar-plugin jest wyraźnie wskazane, że jedynym słusznym rozszerzeniem jest jar. Patrz org.apache.maven.plugin.jar.AbstractJarMojo.getJarFile(File basedir, String finalName, String classifier).

Zdaje się, że właśnie natrafiłem na ciekawy problem na długie i obfitujące w jedzenie, świąteczne wieczory.

p.s. Dzięki Szimano za niezłą zagadkę na zakończenie roku. Gratulacje humoru! ;-)