2016-04-01 8 views
0

Ein vorhandenes maven pom-Projekt <packaging>pom</packaging>, das derzeit Ressourcen sammelt und packt, muss erweitert werden, um einige der Ressourcen zu validieren. Im selben Projekt habe ich ein Java-Quellverzeichnis erstellt src/main/java und dort habe ich eine kleine Java-Klasse erstellt, um einige der Ressourcen zu validieren. Zusätzlich habe ich den Maven-Compiler und das exec-maven Plugin im Pom konfiguriert.Hinzufügen von Build-Aufgaben zu maven pom project

Die Java-Klasse läuft gut in der IDE aber es schlägt fehl, wenn ich mvn clean install es fehlschlägt, weil es die kompilierte Klassendatei nicht finden kann. Dies liegt daran, dass die Kompilier-/Test-Kompilierphase für Pom-verpackte Projekte nicht verfügbar ist.

Meine Fragen sind:

  • Kann ich den Compiler ändern Plugin (kompiliert) in einer anderen Phase als die Standard-Compiler-Phase auszuführen. (Ich versuchte es mit einem Hinzufügungs-Tag, aber ohne Erfolg)
  • Warum wird das exec-maven-Plugin ausgeführt, weil dies in der Testphase definiert wurde, die laut der Dokumentation nicht Teil des POM-Pakets ist.
  • Gibt es andere Möglichkeiten, diese Validierungsaufgabe im Pom auszuführen?

Die Verpackung von Pom zu Glas zu verändern, ist eine politische suboptimale Lösung.

+1

Hier stimmt etwas nicht. Ein 'Pom'-Projekt mit Java-Code zum kompilieren? Was versuchst du wirklich hier zu machen? Was ist dein Problem und dein Endziel? Wie ist Ihre aktuelle Projektstruktur? Relevant: [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Tunaki

Antwort

1

Ja, Sie können maven-compiler-plugin so konfigurieren, dass die Kompilierung in der package Phase der Pom-Verpackung ausgeführt wird.

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.5.1</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
       <phase>package</phase> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.4.0</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>java</goal> 
       </goals> 
       <phase>package</phase> 
      </execution> 
     </executions> 
     <configuration> 
      <mainClass>com.example.validate.App</mainClass> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
+3

Das ist Missbrauch, wörtlich. 'package' Phase ist nicht zum Kompilieren von Quellen gedacht. – Tunaki