Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript and CSS files combining in Maven build WITHOUT compression, minification etc

Tags:

maven

Is there an Maven plugin that just combines js and css resources but doesn't do any minification, obsucation, compressing etc? Just simple resources concatenation.

like image 837
Piotr Gwiazda Avatar asked Aug 31 '12 11:08

Piotr Gwiazda


1 Answers

Make the following changes to your project:

  1. In your pom.xml, <dependencies> tag, place:

    <!-- JAVASCRIPT COMBINATION -->
    <dependency>
        <groupId>ro.isdc.wro4j</groupId>
        <artifactId>wro4j-core</artifactId>
    </dependency>
    
  2. In your pom.xml, <plugins> tag, place:

    <plugin>
        <groupId>ro.isdc.wro4j</groupId>
        <artifactId>wro4j-maven-plugin</artifactId>
        <version>1.4.3</version>
        <executions>
            <execution>
                <phase>process-resources</phase>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <targetGroups>allDev</targetGroups>
            <destinationFolder>${basedir}/src/main/webapp/</destinationFolder>
            <contextFolder>${basedir}/src/main/webapp/</contextFolder>
        </configuration>
    </plugin>
    
  3. In your pom.xml (or the parent pom.xml) <dependencyManagement> tag, place:

    <!-- JAVASCRIPT COMBINATION -->
    <dependency>
        <groupId>ro.isdc.wro4j</groupId>
        <artifactId>wro4j-core</artifactId>
        <version>1.8.0</version>
    </dependency>
    
  4. Create a wro.xml under /project/src/main/webapp/WEB-INF and place something like the following:

    <?xml version="1.0" encoding="UTF-8"?>
    <groups xmlns="http://www.isdc.ro/wro">  
        <group name="allDev">  
            <js minimize="false">/my1stJsFolder/*.js</js>
            <js minimize="false">/my2ndJsFolder/*.js</js>
            <js minimize="false">/someFileDirectlyUnderWEBINF.js</js>
        </group>
    </groups>  
    
  5. In web.xml insert:

    <filter>
        <filter-name>WebResourceOptimizer</filter-name>
        <filter-class>ro.isdc.wro.http.WroFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>WebResourceOptimizer</filter-name>
        <url-pattern>/wro/*</url-pattern>
    </filter-mapping>
    

allDev.js will be generated under /project/src/main/webapp.

I am not sure yet how I could tell wro4j to only generate one in target (now you have two - one in the project source files and one in target).

When compressing with yui plugin I only get one in target. But this should not be that big of a problem for you.

For more:

  • https://code.google.com/p/wro4j/wiki/GettingStarted
  • https://code.google.com/p/wro4j/wiki/MavenPlugin
  • http://www.jarvana.com/jarvana/search?search_type=project&project=wro4j-maven-plugin

ADDITIONALLY:

If you have any problems with the resource processing try adding to <build> tag:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>

And also to <plugins> add

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
            <nonFilteredFileExtension>swf</nonFilteredFileExtension>
            <nonFilteredFileExtension>jpg</nonFilteredFileExtension>
            <nonFilteredFileExtension>jpeg</nonFilteredFileExtension>
            <nonFilteredFileExtension>class</nonFilteredFileExtension>
            <nonFilteredFileExtension>jks</nonFilteredFileExtension>
            <nonFilteredFileExtension>exe</nonFilteredFileExtension>
            <nonFilteredFileExtension>wmv</nonFilteredFileExtension>
            <nonFilteredFileExtension>jar</nonFilteredFileExtension>
            <nonFilteredFileExtension>zip</nonFilteredFileExtension>
            <nonFilteredFileExtension>gz</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>  
like image 103
despot Avatar answered Oct 21 '22 15:10

despot