Własny plugin mavena 11.04.2008
Zabrałem się za pisanie własnej wtyczki do mavena. Początki są bardzo proste.
Tak jak pisałem wcześniej wtyczka musi umieścić wtyczki RCP w odpowiedniej strukturze katalogów i uruchomić budowanie aplikacji przy pomocy pde-maven-plugin.
Po zakończeniu działania wtyczki pde-maven potrzebowałem przyporządkować plik wynikowy do mojego artefaktu, tak żeby w fazie install lub deploy maven wiedział co ma instalować. W tym celu należy zdefiniować prywatne pole:
/**
* Projekt w którym działamy.
*
* @parameter expression=”${project}”
*/
private MavenProject project;
I w kodzie umieścić następujący fragment:
Artifact artifact = project.getArtifact();
artifact.setFile(new File(sciezkaDoPlikuWynikowego));
Problem w tym, że mój build zawiera dwa pliki wynikowe jeden pod windows, drugi pod linux. W tej sytuacji z pomocą przychodzi MavenProjectHelper:
/**
* @component
*/
private MavenProjectHelper projectHelper;
Z którego pomocą robimy co należy:
projectHelper.attachArtifact(this.project, “zip”, “linux”, new File(sciezkaDoPliku));
Pozostaje tylko zmusić wtyczkę do obsłużenia artefaktów typu zip oraz do automatycznego uruchomienia w fazie package. W tym celu tworzymy plik META-INF/plexus/components.xml:
<component-set>
<components>
<component>
<role>
org.apache.maven.lifecycle.mapping.LifecycleMapping
</role>
<role-hint>zip</role-hint>
<implementation>
org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<initialize></initialize>
<generate-sources></generate-sources>
<process-sources></process-sources>
<generate-resources></generate-resources>
<process-resources></process-resources>
<compile>
</compile>
<process-test-resources></process-test-resources>
<test-compile></test-compile>
<test></test>
<package>
group.id:plugin-name:build-goal
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>
org.apache.maven.artifact.handler.ArtifactHandler
</role>
<role-hint>zip</role-hint>
<implementation>
org.apache.maven.artifact.handler.DefaultArtifactHandler
</implementation>
<configuration>
<type>zip</type>
<extension>zip</extension>
<includesDependencies>true</includesDependencies>
</configuration>
</component>
</components>
</component-set>
Wszystko proste, łatwe i przyjemne :)


Leave a Reply