2016-04-03 8 views
1

Ich muss wissen, in welcher Phase des Maven-Zyklus die jsp auf das Zielverzeichnis gelegt werden und durch welchen Prozess.In welcher Mavenphase werden die JSP auf das Ziel gesetzt?

Ich benutze die grunt-maven-plugin, um eine Transformation auf meine .jsp Dateien (ich erzeuge die Einfügung der js-Skripte, wenn Sie wissen wollen).

Grunt dupliziert die jsp-Datei in einem temporären Verzeichnis, führt ihre Aufgabe aus und legt das aktualisierte jsp im Verzeichnis target/$ {project.build.name} ab. (wenn ich nur Grunt starte, kann ich überprüfen, ob es funktioniert)

Mein Problem ist, dass die aktualisierte Datei von der ursprünglichen JSP überschrieben wird, die in diesem Repository verschoben wird.

Wenn ich nur Grunt starte (ich mache eine mvn compile, die die Grunt-Aufgabe starten), kann ich meine Grunt-Arbeit gut überprüfen. Aber wenn ich eine mvn install mache, werden die Dateien überschrieben.

Ich denke, ich kann es korrigieren, indem Sie grunt starten, nachdem die ursprünglichen jsp bewegt wurden.

Frage: Wissen Sie, während welcher Phase des Zyklus Maven die jsp auf das Zielverzeichnis gestellt werden?

Mein Projekt ist übrigens eine Webapp von der Maven Artefakt Webapp.

+0

Ihre Verpackung ist "Krieg"? Und Sie verwenden Maven-War-Plugin, nehme ich an? – khmarbaise

+0

Ich packe mit Krieg, aber ich habe das Problem mit und ohne das maven-war-plugin. – sab

Antwort

1

Ich muss wissen, in welcher Phase des Maven-Zyklus die JSP auf das Zielverzeichnis gesetzt werden und durch welchen Prozess.

Während der package Phase durch die Maven War Plugin und seine war Ziel.

Having Verpackung war ein Maven build standardmäßigwar:war (war des Maven War Plugin) während der Phase package aufrufen nach default packaging bindings. Daher müssen Sie es nicht explizit in Ihrer POM-Datei angeben.

Das Maven War Plugin wird

  • Erstellen Sie das volle Webapp, die standardmäßig unter ${project.build.directory}/${project.build.finalName}, wie durch seine webappDirectory Konfigurationseintrag angegeben
  • Paket als .war Datei unter ${project.build.directory} standardmäßig wie durch seine outputDirectory angegeben Konfigurationseintrag

Mein Problem ist, dass die aktualisierte Datei vom ursprünglichen JSP überschrieben wird, der in demselben Repository verschoben wird.

In diesem Fall, dass Sie einen Dateikonflikt haben, gleichen Dateien (mit unterschiedlichen Inhalten) in denselben Zielordner (target/${project.build.name}, wie Sie das gleiche wie das Standard War Plugin ausgabe oben erwähnt ist).

Sie könnten Ihre modifizierten .jsp Dateien in ein anderes Verzeichnis umleiten, sagen wir target/grunt und dann konfigurieren Sie das Maven War Plugin, um auch Ressourcen aus diesem Verzeichnis zu übernehmen. Diese zusätzlichen Ressourcen werden nach den Standardressourcen hinzugefügt und als solche überschrieben (im Falle von Konflikten).

Zum Beispiel könnten Sie Ihre POM-Datei mit folgendem Zusatz konfigurieren:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <webResources> 
      <resource> 
       <!-- this is relative to the pom.xml directory --> 
       <directory>target/grunt</directory> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 

Die globale Konfiguration wird auch auf den Standard Maven Plugin Ist angewandt als Teil der oben genannten Bindungen ausgeführt.

Im obigen Snippet sagen wir dem Maven War Plugin, dass es auch Ressourcen aus dem Ordner target/grunt enthält. Jede in diesem Ordner vorhandene Datei .jsp würde dann zur erstellten Webanwendung (als Ordner und .war Datei) hinzugefügt und überschreibt die ursprünglichen .jsp Dateien (wie Sie es eigentlich wollten).

Verwandte Themen