2016-04-20 5 views
0

Ich erstelle ein Maven-Artefakt, das nicht Java ist. In der pom.xml ich einige Abhängigkeiten auflösen und dann ein benutzerdefiniertes Skript mit exec Plugin ausführen. Einige Dateien werden in einem Verzeichnis erstellt, aber Maven sieht sie nicht, wenn sie in einem Jar verpackt werden.Maven-Paket enthält nur Datei im zweiten Lauf

Wenn ich mvn package zweimal ausführen, enthält der zweite Lauf die Ressourcendateien im Jar.

Irgendwelche Ideen, warum das passiert? Das Skript wird während der Phase compile ausgeführt, sodass die Dateien bereits erstellt werden, wenn die Phase package das Glas erstellt.


Dies ist relevant (hoffentlich) ein Teil meiner pom.xml Konfiguration:

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.4.0</version> 
     <executions> 
      <execution> 
       <id>build-plugin</id> 
       <phase>compile</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
       <configuration> 
        <executable>bash</executable> 
        <arguments> 
         <argument>build_plugin.sh</argument> 
         <argument>${workspace}</argument> 
         <argument>${plugin}</argument> 
        </arguments> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

<resources> 
    <resource> 
     <directory>${project.basedir}/${outputPath}</directory> 
     <includes> 
      <include>**</include> 
     </includes> 
     <excludes> 
      <exclude>target/**</exclude> 
     </excludes> 
    </resource> 
</resources> 

Alle Variablen und Pfade gültig sind, auf dem zweiten Lauf ich ein Glas mit erwarteten Inhalt immer bin. Aber nicht während des ersten.

Antwort

1

in Maven Standard Lifecycle die Verarbeitung von Ressourcen geschieht, bevor https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference siehe Kompilieren

Was Sie tun müssen, ist die Build-Phase der „exec-Maven-Plugin“ zu ändern, verwenden Sie „generate-Quellen“ statt "kompilieren"

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.4.0</version> 
     <executions> 
      <execution> 
       <id>build-plugin</id> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
       <configuration> 
        <executable>bash</executable> 
        <arguments> 
         <argument>build_plugin.sh</argument> 
         <argument>${workspace}</argument> 
         <argument>${plugin}</argument> 
        </arguments> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

<resources> 
    <resource> 
     <directory>${project.basedir}/${outputPath}</directory> 
     <includes> 
      <include>**</include> 
     </includes> 
     <excludes> 
      <exclude>target/**</exclude> 
     </excludes> 
    </resource> 
</resources> 
Verwandte Themen