Blog PeTe

Własny plugin mavena 11.04.2008

Kategoria wpisu: Komputery, Programowanie — PeTe @ 12:26
Tags: ,

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