2016-03-31 14 views
4

Ich benutze das Maven Plugin minify-maven-plugin um mein Frontend Projekt zu minimieren. Das funktioniert gut, wenn ich über DOS-Box an das Frontend-Projekt gehen und führe mvn clean install aber wenn ich mvn clean install im Haupt pom in meinem Reaktor Projekt ausführen dann bekomme ich die folgende Ausnahme:minify Frontend mit Minify-Maven-Plugin

fehlgeschlagen Ziel com.samaxes auszuführen. maven: minify-maven-plugin: 1.7.4: minify (default-minify) im Projekt my.project-frontend: Ausführung default-minify des Ziels com.samaxes.maven: minify-maven-plugin: 1.7.4: minify failed : basedir ./src/main/resources/public/app/. existiert nicht

Weiß jemand, was zu tun ist, damit dieses funktioniert?

Unterhalb der betreffenden Plugin-Konfiguration:

<!-- minify plugin --> 
    <plugin> 
     <groupId>com.samaxes.maven</groupId> 
     <artifactId>minify-maven-plugin</artifactId> 
     <version>1.7.4</version> 
     <executions> 
      <execution> 
      <id>default-minify</id> 
      <phase>prepare-package</phase><!-- When omitted defaults to 'process-resources' --> 
      <configuration> 
       <charset>UTF-8</charset> 
       <skipMerge>true</skipMerge> 
       <nosuffix>true</nosuffix> 
       <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel> 
       <webappSourceDir>src/main/resources/public/app</webappSourceDir> 
       <webappTargetDir>${project.build.outputDirectory}/public/app</webappTargetDir> 

       <cssSourceDir>./</cssSourceDir> 
       <cssSourceIncludes> 
       <cssSourceInclude>**/*.css</cssSourceInclude> 
       </cssSourceIncludes> 

       <jsSourceDir>./</jsSourceDir> 
       <jsSourceIncludes> 
       <jsSourceInclude>**/*.js</jsSourceInclude> 
       </jsSourceIncludes> 

       <jsEngine>CLOSURE</jsEngine> 
      </configuration> 
      <goals> 
       <goal>minify</goal> 
      </goals> 
      </execution> 
     </executions> 
    </plugin> 
<!-- minify plugin end --> 
+0

* basedir ./src/main/resources/public/app/. ist nicht vorhanden*. Das ist klar, nein? Ist der Ordner vorhanden? – Tunaki

+0

Ja, es existiert, andernfalls konnte das Projekt nicht erstellt werden, wenn ich mvn clean install im Projekt ausführe. Das Problem muss mit dem Weg zum Reaktorprojekt sein. – quma

Antwort

6

ich in der Lage war, das Problem zu reproduzieren und fix it durch den Konfigurationseintrag zu ändern unter

<webappSourceDir>src/main/resources/public/app</webappSourceDir> 

zu

<webappSourceDir>${project.basedir}/src/main/resources/public/app</webappSourceDir> 

Das heißt, den StandardhinzufügenEigenschaft als Präfix.

Damit war der Build erfolgreich aus dem Modul selbst, aber auch aus dem übergeordneten (der Reaktor/Aggregator Build).

Dank dieses Präfixes löst der Reaktor-Build den Pfad korrekt auf und zeigt während des Builds auf das aktuelle Basisverzeichnis (das des betreffenden Moduls).


Von offiziellen Maven Builder model documentation

{project.basedir} das Verzeichnis mit der pom.xml Datei

Daher wird der Reaktor bauen für jedes Modul diese Eigenschaft ersetzen, in dem Verzeichnis zeigt das Modul enthält pom.xml Datei (daher das Verzeichnis des Moduls). Es wird auch richtig funktionieren, wenn das Build direkt vom Modul ausgeführt wird und offensichtlich auf das aktuelle Verzeichnis zeigt.

Beachten Sie auch: ${basedir} würde auch funktionieren, aber es ist zugunsten project.basedir veraltet, daher besser, letztere zu verwenden.

+0

Vielen Dank, ich werde es testen und dir danach die 100 Punkte geben. – quma

+0

@ user3318489 froh zu sehen, dass es geholfen hat !, da Sie die Bounty zugewiesen haben, denke ich, es war gut als Lösung. In diesem Fall würde ich auch vorschlagen, es als Antwort zu akzeptieren, damit die Frage statistisch nicht als unbeantwortet erscheint. Vielen Dank –

0

Sie cam minify als:

<plugin> 
      <groupId>com.samaxes.maven</groupId> 
      <artifactId>minify-maven-plugin</artifactId> 
      <version>1.7.4</version> 
      <executions> 
       <execution> 
        <id>minify-css</id> 
        <configuration> 
        <charset>utf-8</charset> 
        <skipMerge>true</skipMerge> 
        <statistics>true</statistics> 
        <cssSourceDir>css</cssSourceDir> 
        <cssTargetDir>css/min</cssTargetDir> 
        <cssSourceIncludes> 
         <cssSourceInclude>*.css</cssSourceInclude> 
        </cssSourceIncludes> 
        </configuration> 
        <goals> 
        <goal>minify</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>minify-js-cfl</id> 
        <configuration> 
        <charset>utf-8</charset> 
        <skipMerge>true</skipMerge> 
        <statistics>true</statistics> 
        <jsSourceDir>js/xyz/modules/cfl</jsSourceDir> 
        <jsTargetDir>js/xyz/modules/cfl/min</jsTargetDir> 
        <jsSourceIncludes> 
         <jsSourceInclude>*.js</jsSourceInclude> 
        </jsSourceIncludes> 
        </configuration> 
        <goals> 
        <goal>minify</goal> 
        </goals> 
       </execution> 
       <execution>