He estado luchando con la obtención de este plugin para jugar bien con el maven-guerra-plugin para un par de horas y yo pensé que era hora de pedir ayuda. Tengo el plugin define de la siguiente manera:

<plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <version>1.3.0</version>
    <executions>
        <execution>
            <id>compressyui</id>
            <phase>process-resources</phase>
            <goals>
                <goal>compress</goal>
            </goals>
            <configuration>
                <nosuffix>true</nosuffix>
                <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
                <jswarn>false</jswarn>
            </configuration>
        </execution>
    </executions>
</plugin>

Si puedo quitar nosuffix=verdadero entonces puedo ver el comprimido/record -min.js los archivos de entrar en la guerra como se esperaba, pero con este indicador están siendo reemplazados por el maven-guerra-plugin (estoy suponiendo) cuando se crea el archivo war. Realmente necesito los nombres de archivo a seguir siendo el mismo, aunque … ¿alguien tiene una idea de lo que tengo que cambiar en el fin de utilizar el mismo nombre de archivo y aún así obtener el record de versiones en el final de la guerra?

InformationsquelleAutor Dave Maple | 2012-07-15

6 Comentarios

  1. 26

    ACEPTAR. Finalmente me di cuenta de esto. Es necesario definir un <webappDirectory> en el yuicompressor plugin que puede ser referenciado como un <resource> en el maven-guerra-plugin. En el siguiente ejemplo estoy usando <directory>${project.build.directory}/min</directory>

    <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>yuicompressor-maven-plugin</artifactId>
        <version>1.3.0</version>
        <executions>
            <execution>
                <id>compressyui</id>
                <phase>process-resources</phase>
                <goals>
                    <goal>compress</goal>
                </goals>
                <configuration>
                    <nosuffix>true</nosuffix>
                    <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
                    <webappDirectory>${project.build.directory}/min</webappDirectory>
                    <jswarn>false</jswarn>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <executions>
            <execution>
                <id>default-war</id>
                <phase>package</phase>
                <goals>
                    <goal>war</goal>
                </goals>
                <configuration>
                    <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
                    <encoding>UTF-8</encoding>
                </configuration>
            </execution>
        </executions>
        <configuration>
            <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
            <encoding>UTF-8</encoding>
            <webResources>
                <resource>
                    <directory>${project.build.directory}/min</directory>
                </resource>
            </webResources>
        </configuration>
    </plugin>
    • Gracias, gracias, gracias! Yo tenía el mismo problema y no pude encontrar ninguna solución sensata hasta ahora. YUI plugin vocabulario es muy confusas de la omi :/
    • No funciona para mí. La guerra plugin de copia recursos de la web (record de archivos) en primer lugar, la sobrescribir con los contenidos de la guerra directorio de origen.
    • Sí, eso es por qué te gustaría poner en el /min directorio y, a continuación, en el maven-guerra-plugin definir que /min directorio como un <recursos> como en el ejemplo anterior.
    • hola, yo uso su manera, pero mvn install de acusar a los que [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project gif-www: Execution default-war of goal org.apache.maven.plugins:maven-war-plugin:2.2:war failed: basedir /home/ximing/work/gifmiao/gif-www/target/min does not exist -> [Help 1]
    • suena como un problema de permisos de @armnotstrong — lo que el usuario hace mvn ejecutar como y no se tienen permisos de escritura en ese directorio?
  2. 8

    Solo hay que configurar ‘warSourceExcludes’ en la GUERRA plugin.

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <warSourceExcludes>**/*.css,**/*.js</warSourceExcludes>
        </configuration>
    </plugin>
  3. 3

    Me gustaría añadir la configuración que funcionó para mí:

    Primer lugar, para solucionar m2e quejan de la ‘ejecución Plugin no cubiertos por el ciclo de vida’ he añadido la siguiente, en la matriz del pom tomado de este post:

      <pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse 
                m2e settings only. It has no influence on the Maven build itself. -->
            <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.0.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

    A continuación, en la guerra pom pongo:

    <build>
        <plugins>
            <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.4.0</version>
            <executions>
            <execution>
                <goals>
                  <goal>compress</goal>
                </goals>
                <configuration>
                   <linebreakpos>300</linebreakpos>
                   <excludes>
                     <exclude>**/*-min.js</exclude>
                     <exclude>**/*.min.js</exclude>
                     <exclude>**/*-min.css</exclude>
                     <exclude>**/*.min.css</exclude>
                   </excludes>              
                   <nosuffix>true</nosuffix>
                </configuration>
            </execution>
            </executions>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <warSourceExcludes>**/*.css,**/*.js</warSourceExcludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    Esto genera el record de los archivos css y js en el proyecto de construir el directorio de destino, y excluyendo a los archivos originales.

    Espero que esto ahorra tiempo alguien.

  4. 2

    esta es mi configuración, y funciona bien en mi maven web del proyecto:

        <!-- js/css compress -->
    <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>yuicompressor-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
            <excludes>
                <exclude>**/*-min.js</exclude>
                <exclude>**/*.min.js</exclude>
                <exclude>**/*-min.css</exclude>
                <exclude>**/*.min.css</exclude>
            </excludes>
            <jswarn>false</jswarn>
            <nosuffix>true</nosuffix>
        </configuration>
        <executions>
            <execution>
                <id>compress_js_css</id>
                <phase>process-resources</phase>
                <goals>
                    <goal>compress</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <!-- war -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
            <webResources>
                <resource>
                    <directory>${project.build.directory}/${project.build.finalName}/resources</directory>
                    <targetPath>/resources</targetPath>
                    <filtering>false</filtering>
                </resource>
            </webResources>
            <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
        </configuration>
    </plugin>
  5. 0

    El enfoque que yo uso es un poco diferente.

    Primero, he configurado mi IDE para ejecutar mvn process-resources antes de la compilación/embalaje. De esta manera se crean los archivos antes de la guerra está montado.

    Es muy importante establecer <nosuffix>false</nosuffix> y <outputDirectory>${basedir}/src/main/resources/</outputDirectory> por lo que los archivos pueden ser creados en el mismo directorio sin tener que reemplazar su fuente original de los archivos.

     <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>yuicompressor-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
            <preProcessAggregates>false</preProcessAggregates>
            <excludes>
                <exclude>**/*-min.js</exclude>
                <exclude>**/*.min.js</exclude>
                <exclude>**/*-min.css</exclude>
                <exclude>**/*.min.css</exclude>
            </excludes>
            <jswarn>false</jswarn>
            <nosuffix>false</nosuffix> <!-- VERY IMPORTANT WILL REPLACE YOUR FILES IF YOU SET nosuffix TO TRUE OR DONT SET IT AT ALL -->
            <outputDirectory>${basedir}/src/main/resources/</outputDirectory> <!-- by default the plugin will copy the minimized version to target directory -->
            <failOnWarning>false</failOnWarning>
        </configuration>
    
        <executions>
            <execution>
                <id>compress_js_css</id>
                    <phase>process-resources</phase>
                <goals>
                    <goal>compress</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
  6. 0

    Como Jakob Kruse decir, debe lidiar con el *.js, pero no. *min.js, así que mis configuraciones a continuación, por favor observe el uso de %regex[] :

    HTML:

    			<plugin>
    			    <groupId>net.alchim31.maven</groupId>
    			    <artifactId>yuicompressor-maven-plugin</artifactId>
    			    <version>1.4.0</version>
    			    <executions>
    			        <execution>
    			            <id>compressyui</id>
    			            <phase>process-resources</phase>
    			            <goals>
    			                <goal>compress</goal>
    			            </goals>
    			            <configuration>
    			                <nosuffix>true</nosuffix>
    			                <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
    			                <webappDirectory>${project.build.directory}/min</webappDirectory>
    			                <jswarn>false</jswarn>		
    				        <excludes>
    				            <exclude>**/*-min.js</exclude>
    				            <exclude>**/*.min.js</exclude>
    				            <exclude>**/*-min.css</exclude>
    				            <exclude>**/*.min.css</exclude>
    
    				            <exclude>**/jquery.window.js</exclude>
    				            ......
    				            <exclude>**/compile.js</exclude>
    				        </excludes>
    			            </configuration>
    			        </execution>
    			    </executions>
    			</plugin>
    
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.4</version>
    				<configuration>
    					<warSourceDirectory>WebContent</warSourceDirectory>					
    					<packagingExcludes>servlet-api*.jar,target/test-classes/*</packagingExcludes>
    					<warSourceExcludes>test/**,%regex[.*(!min).js],%regex[.*(!min).css]</warSourceExcludes>
    				
    					<webResources>
     					            <resource>
    					                <directory>${project.build.directory}/min</directory>
    					            </resource>
    					</webResources>
    				
    				</configuration>
    			</plugin>

Dejar respuesta

Please enter your comment!
Please enter your name here