2012-03-31 11 views
2

Ich verwende Eclipse Indigo mit M2E, um eine lokale Web-App mit WTP zu implementieren. Ich benutze auch das yui-compressor plugin, das auf dem explodierten Kriegsverzeichnis unter target gut funktioniert, aber nicht mit eclipse WTP. Gibt es eine empfohlene Möglichkeit, dies einzurichten, damit ich lokal entwickeln und die minimierten Dateien verwenden kann?Kann das Yui Compressor Maven Plugin mit WTP arbeiten?

Hier ist meine yui config:

<plugin> 
      <groupId>net.alchim31.maven</groupId> 
      <artifactId>yuicompressor-maven-plugin</artifactId> 
      <version>1.3.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compress</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <nosuffix>true</nosuffix> 
       <force>true</force> 
       <jswarn>false</jswarn> 
       <linebreakpos>-1</linebreakpos> 
       <excludes> 
        <exclude>**/lib/*</exclude> 
       </excludes> 
       <aggregations> 
        <aggregation> 
         <insertNewLine>true</insertNewLine> 
         <output>${project.build.directory}/${project.build.finalName}/static/js/script-${timestamp}.min.js</output> 
         <includes> 
          <include>**/script/*.js</include> 
         </includes> 
         <excludes> 
          <exclude>**/lib/*</exclude> 
         </excludes> 
        </aggregation> 
       </aggregations> 
      </configuration> 
     </plugin> 

<pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>net.alchim31.maven</groupId> 
            <artifactId>yuicompressor-maven-plugin</artifactId> 
            <versionRange>[1.2,)</versionRange> 
            <goals> 
             <goal>compress</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 

Antwort

0

Das Problem, denke ich, ist, dass Sie nicht zu maven-war-plugin sagen, wo erzeugten Ressourcen zu finden.

Sie sollten versuchen, webResources Abschnitt der maven-war-plugin Konfiguration hinzufügen, z.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
     <resource> 
      <filtering>true</filtering> 
      <directory>${basedir}/src/main/webapp</directory> 
      <excludes> 
      <exclude>**/pattern-for-non-minified-scripts</exclude> 
      </excludes> 
     </resource> 
     <resource> 
      <filtering>true</filtering> 
      <directory>${project.build.directory}/${project.build.finalName}</directory> 
      <includes> 
      <include>static/js/script-${timestamp}.min.js</include> 
      </includes> 
     </resource> 
     </webResources> 
    </configuration> 
    </plugin> 

Um zu sehen, dass WTP die verkleinerten Dateien aufgenommen hat, überprüfen .settings/org.eclipse.wst.common.component Datei hat die folgende Zeile:

<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> 
+0

Danke, nachdem ich das getan habe, kann ich sehen, dass die Ressourcen in den Ordner "web-resources" gestellt und minimiert werden. Es scheint jedoch, dass ich dies nicht inkrementell durchführen kann. Auch wenn das yui-Plugin ausgeführt werden kann, nachdem Ressourcen gespeichert wurden, werden die Änderungen nicht in den web-resources-Ordner verschoben, es sei denn, ich erstelle erneut einen Build. Gibt es einen Weg, um es mit WTP zu verwenden? – user842800

0

Sie <runOnIncremental>true</runOnIncremental> versuchen Haben?

<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.eclipse.m2e</groupId> 
      <artifactId>lifecycle-mapping</artifactId> 
      <version>1.0.0</version> 
      <configuration> 
       <lifecycleMappingMetadata> 
        <pluginExecutions> 
         <pluginExecution> 
          <pluginExecutionFilter> 
           <groupId>net.alchim31.maven</groupId> 
           <artifactId>yuicompressor-maven-plugin</artifactId> 
           <versionRange>[1.3.0,)</versionRange> 
           <goals> 
            <goal>compress</goal> 
           </goals> 
          </pluginExecutionFilter> 
          <action> 
           <execute> 
            <runOnIncremental>true</runOnIncremental> 
           </execute> 
          </action> 
         </pluginExecution> 
        </pluginExecutions> 
       </lifecycleMappingMetadata> 
      </configuration> 
     </plugin> 
    </plugins> 
</pluginManagement> 

Um M2E Ausgabe der Dateien in das /src/ Verzeichnis anstatt das /target/ Verzeichnis zu haben, verwende ich die folgenden:

<plugins> 
    <plugin> 
     <groupId>net.alchim31.maven</groupId> 
     <artifactId>yuicompressor-maven-plugin</artifactId> 
     <version>1.3.0</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>compress</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <sourceDirectory>${project.basedir}/src/main/webapp/resources/js</sourceDirectory> 
      <outputDirectory>${project.basedir}/src/main/webapp/resources/js-min</outputDirectory> 
     </configuration> 
    </plugin> 
</plugins> 

In meinem HTML ich verweisen dann auf die JavaScript-Datei (en) in [...]/resources/js-min/.

Verwandte Themen