Instead of having 2 execution-ids of the same plugin, I would use only one
and define an yuiCompressorOutput property, having the default value of
${project.build.directory}/${project.build.finalName} and the value used
within m2e would be ${project.build.directory}/m2e-wtp/web-resources/
That'd look like
...
[in yuicompressor-maven-plugin config]
<output>${yuiCompressorOutput}/resources/js/0_1_2/script-min.js</output>
...
...
<properties>
<yuiCompressorOutput>${project.build.directory}/${project.build.finalName}</yuiCompressorOutput>
</properties>
...
<profiles>
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<properties>
<yuiCompressorOutput>${project.build.directory}/m2e-wtp/web-resources/
</yuiCompressorOutput>
</properties>
</profile>
</profiles>
Regards,
Fred Bricon
2011/10/14 Gustavo Henrique Orair <[email protected]>
> Recently,
> we've decided to migrate to Eclipse Indigo and uses m2e 1.0.
> But, we have problems trying to tackle the lifecycle mapping problem.
> As I understood, we have to define in pom.xml lifecycle mapping metadata to
> instruct Eclipse which executions should be executed when sources are
> changed.
>
> In our WAR project, we want to write many small javascript source files and
> these files would be merged in an unique file (minified or not). For this
> task, we've planned to use yuicompressor-maven-plugin.
> I didn't find too many docs instructing how to develop a connector for this
> plugin. Just found an example inside m2e-core sources defining a lyfecicle
> mapping metadata to instruct m2e to ignore the execution of this plugin.
> However, we would want to use and reference the merged file while deploying
> the artifact using Eclipse WTP.
>
> The solution (I found googling) looks like to be instruct the plugin to
> generate the merged javascript file inside m2e-wtp/web-resources/ directory.
> So, we have to define two executions for this plugin. One to generate the
> merged file inside target (to be packaged) by maven (yuicompressor-default
> execution id) another to generate the merged file inside
> m2e-wtp/web-resources/ directory(yuicompressor-
> eclipse execution id).
> The second step would be to create the lifecycle metadata to instruct the
> execution of the plugin that generates the merged file inside
> m2e-wtp/web-resources.
> One problem in this approach is that for each source file changed, both
> yuicompressor-maven-plugin are executed since we didn't find a way to ignore
> just the yuicompressor-default execution.
>
> Here I present my pom.xml relevant sections:
> Metadata filecycle mapping:
>
> <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.2,)</versionRange>
> <id>yuicompressor-eclipse</id>
> <goals>
> <goal>compress</goal>
> </goals>
> </pluginExecutionFilter>
> <action>
> <execute></execute>
> </action>
> </pluginExecution>
> </pluginExecutions>
> </lifecycleMappingMetadata>
> </configuration>
> </plugin>
> </plugins>
> </pluginManagement>
>
>
>
>
> Yui Compreessor maven Plugin configuration
>
> <plugins>
> <plugin>
> <groupId>net.alchim31.maven</groupId>
> <artifactId>yuicompressor-maven-plugin</artifactId>
> <version>1.2</version>
> <executions>
> <execution>
> <id>yuicompressor-default</id>
> <phase>process-resources</phase>
> <goals>
> <goal>compress</goal>
> </goals>
> <inherited>false</inherited>
> <configuration>
> <aggregations>
> <aggregation>
> <!-- remove files after aggregation
> (default: false) <removeIncluded>true</removeIncluded> -->
> <!-- insert new line after each
> concatenation (default: false) -->
> <insertNewLine>true</insertNewLine>
>
> <output>${project.build.directory}/${project.build.finalName}/resources/js/0_1_2/script.js</output>
> <!-- base directory for non absolute
> includes, default to parent dir of output -->
>
> <inputDir>${basedir}/src/main/webapp/resources/js/0_1_2</inputDir>
> <!-- files to include, path relative to
> output's directory or absolute path -->
> <includes>
> <include>file1.js</include>
> <include>file2.js</include>
> <include>file3.js</include>
> <include>file4.js</include>
> <include>file5.js</include>
> <include>file6.js</include>
> <include>file7.js</include>
> </includes>
> <!-- files to exclude, path relative to
> output's directory <excludes> <exclude>**/*.pack.js</exclude>
> <exclude>**/compressed.css</exclude>
> </excludes> -->
> </aggregation>
> <aggregation>
> <!-- remove files after aggregation
> (default: false) <removeIncluded>true</removeIncluded> -->
> <!-- insert new line after each
> concatenation (default: false) -->
> <insertNewLine>true</insertNewLine>
>
> <output>${project.build.directory}/${project.build.finalName}/resources/js/0_1_2/script-min.js</output>
> <!-- base directory for non absolute
> includes, default to parent dir of output -->
>
> <inputDir>${project.build.directory}/${project.build.finalName}/resources/js/0_1_2</inputDir>
> <!-- files to include, path relative to
> output's directory or absolute path -->
> <includes>
> <include>file1-min.js</include>
> <include>file2-min.js</include>
> <include>file3-min.js</include>
> <include>file4-min.js</include>
> <include>file5-min.js</include>
> <include>file6-min.js</include>
> <include>file7-min.js</include>
> </includes>
> <!-- files to exclude, path relative to
> output's directory <excludes> <exclude>**/*.pack.js</exclude>
> <exclude>**/compressed.css</exclude>
> </excludes> -->
> </aggregation>
> </aggregations>
> </configuration>
> </execution>
> <execution>
> <id>yuicompressor-eclipse</id>
> <phase>process-resources</phase>
> <goals>
> <goal>compress</goal>
> </goals>
> <inherited>false</inherited>
> <configuration>
> <aggregations>
> <aggregation>
> <!-- remove files after aggregation
> (default: false) <removeIncluded>true</removeIncluded> -->
> <!-- insert new line after each
> concatenation (default: false) -->
> <insertNewLine>true</insertNewLine>
>
> <output>${project.build.directory}/m2e-wtp/web-resources/resources/js/0_1_2/script.js</output>
>
> <!-- base directory for non absolute
> includes, default to parent dir of output -->
>
> <inputDir>${basedir}/src/main/webapp/resources/js/0_1_2</inputDir>
> <!-- files to include, path relative to
> output's directory or absolute path -->
> <includes>
> <include>file1-min.js</include>
> <include>file2-min.js</include>
> <include>file3-min.js</include>
> <include>file4-min.js</include>
> <include>file5-min.js</include>
> <include>file6-min.js</include>
> <include>file7-min.js</include>
> </includes>
> <!-- files to exclude, path relative to
> output's directory <excludes> <exclude>**/*.pack.js</exclude>
> <exclude>**/compressed.css</exclude>
> </excludes> -->
> </aggregation>
> <aggregation>
> <!-- remove files after aggregation
> (default: false) <removeIncluded>true</removeIncluded> -->
> <!-- insert new line after each
> concatenation (default: false) -->
> <insertNewLine>true</insertNewLine>
>
> <output>${project.build.directory}/m2e-wtp/web-resources/resources/js/0_1_2/script-min.js</output>
> <!-- base directory for non absolute
> includes, default to parent dir of output -->
>
> <inputDir>${project.build.directory}/${project.build.finalName}/resources/js/0_1_2</inputDir>
> <!-- files to include, path relative to
> output's directory or absolute path -->
> <includes>
> <include>file1-min.js</include>
> <include>file2-min.js</include>
> <include>file3-min.js</include>
> <include>file4-min.js</include>
> <include>file5-min.js</include>
> <include>file6-min.js</include>
> <include>file7-min.js</include>
> </includes>
> <!-- files to exclude, path relative to
> output's directory <excludes> <exclude>**/*.pack.js</exclude>
> <exclude>**/compressed.css</exclude>
> </excludes> -->
> </aggregation>
> </aggregations>
> </configuration>
> </execution>
> </executions>
> <configuration>
> <!-- <disableOptimizations>false</disableOptimizations>
> -->
>
> <!-- <encoding></encoding> -->
> <!-- <failOnWarning>true</failOnWarning> -->
> <!-- Zip the files. Defaults to false -->
> <!-- <gzip>true</gzip> -->
> <!-- force the compression of every files, else if
> compressed file already exists and is younger than source file, nothing is
> done. -->
> <!-- <force>true</force> -->
> <!-- Unable JavaScript warnings -->
> <jswarn>false</jswarn>
> </configuration>
> </plugin>
> </plugins>
>
>
> Is there another better way to integrate merging and minifying javascript
> or css files inside m2e lifecycle deploying phase?
>
>
> Best regards,
> Orair.
>
> _______________________________________________
> m2e-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/m2e-users
>
>
--
"Have you tried turning it off and on again" - The IT Crowd
_______________________________________________
m2e-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/m2e-users