Tuesday, February 8, 2011

Dojo Maven Integration

Project Structure:
/src
     /main
          /assembly/project-dojo.xml
          /javascript
                     /profiles/project.profile.js
                     /projectpackage1/**.js
                     /projectpackage2/**.js
pom.xml

project.profile.js
dependencies ={
    layers:  [
        {
        name: "../projectpackage1/projectpackage1",//output file
        dependencies: [
        "projectpackage1.hello"//list of all the files that need to be compressed into the given file.
        ]
        }
    ],
    prefixes: [
        [ "dijit", "../dijit" ],
        [ "dojox", "../dojox" ],
    ]
};


project-dojo.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: soc-dojo.xml,v 1.1 2010/04/06 19:27:59 rsingh Exp $ -->

<!-- Assembly descriptor for the CSP DOJO Custom Build ZIP -->
<assembly>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${basedir}/target/javascript/release/dojo</directory>
      <outputDirectory></outputDirectory>
      <includes>
        <include>projectpackage1/**</include>
        <include>projectpackage2/**</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>




pom.xml:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelversion>4.0.0</modelversion>
 <groupid>project-group</groupid>
 <artifactid>project-name</artifactid>
 <packaging>pom</packaging>
 <name>SOC DOJO Custom Build Project</name>
 <description>

 <repositories>
  <repository>
   <id>topaz-repository</id>
   <name>Topaz Project Maven2 Repository</name>
   <url>http://maven.topazproject.org/maven2</url>
  </repository>
 </repositories>

 <build>

  <plugins>

   
   <plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-dependency-plugin</artifactid>
    <executions>
     <execution>
      <id>unpack dojo</id>
      <phase>generate-sources</phase>
      <goals>
       <goal>unpack</goal>
      </goals>
      <configuration>
       <artifactitems>
        <artifactitem>
         <groupid>org.dojotoolkit</groupid>
         <artifactid>dojo</artifactid>
         <classifier>src</classifier>
         <version>1.5.0</version>
         <type>zip</type>
        </artifactitem>
       </artifactitems>
       <outputdirectory>${project.build.directory}/javascript</outputdirectory>
      </configuration>
     </execution>
    </executions>
   </plugin>

   
   <plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-resources-plugin</artifactid>
    <version>2.3</version>
    <executions>
     <execution>
      <id>copy-js</id>
      <phase>generate-sources</phase>
      <goals>
       <goal>copy-resources</goal>
      </goals>
      <configuration>
       <outputdirectory>${project.build.directory}/javascript</outputdirectory>
       <resources>
        <resource>
         <directory>src/main/javascript</directory>
         <filtering>false</filtering>
        </resource>
       </resources>
      </configuration>
     </execution>
    </executions>
   </plugin>

   
   <plugin>
    <groupid>org.codehaus.mojo</groupid>
    <artifactid>exec-maven-plugin</artifactid>
    <version>1.1</version>
    <configuration>
     <executable>${java.home}/bin/java</executable>
     <workingdirectory>${project.build.directory}/javascript/util/buildscripts</workingdirectory>
     <arguments>
      <argument>-classpath</argument>
      <argument>../shrinksafe/js.jar</argument>
      <argument>-classpath</argument>
      <argument>../shrinksafe/shrinksafe.jar</argument>
      <argument>org.mozilla.javascript.tools.shell.Main</argument>
      
      <argument>build.js</argument>
      <argument>profileFile=${project.build.directory}/javascript/profiles/soc.profile.js</argument>
      <argument>action=release</argument>
      <argument>optimize=shrinksafe</argument>
      <argument>layerOptimize=shrinksafe</argument>
      <argument>internStrings=true</argument>
      <argument>cssOptimize=comments.keepLines</argument>
     </arguments>
    </configuration>
    <executions>
     <execution>
      <id>generate-release</id>
      <phase>generate-sources</phase>
      <goals>
       <goal>exec</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

   
   <plugin>
    <artifactid>maven-assembly-plugin</artifactid>
    <configuration>
     <descriptors>
      <descriptor>src/main/assembly/soc-dojo.xml</descriptor>
     </descriptors>
    </configuration>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

   <plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-install-plugin</artifactid>
    <executions>
     <execution>
      <id>install-custom-build</id>
      <phase>package</phase>
      <goals>
       <goal>install</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

  </plugins>
 </build>

</description></project>

No comments:

Post a Comment