PartyWithJohn
PartyWithJohn

Reputation: 466

Can Maven do what we are doing in this ANT build.xml

Can Maven do what we are doing in this ANT build.xml.

  1. Takinig source code and jars and making a war
  2. Moving files around
  3. Changing values in files based on property files values
  4. Deleting files
  5. SCP WAR to server

below is my ANT build. please let me know if I can do all this in Maven... thanks

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="build" name="Create Runnable Jar for Project DisasterReliefBatch with Jar-in-Jar Loader">
    <!--this file was created by Eclipse Runnable JAR Export Wizard-->
    <!--ANT 1.7 is required      
                               -->
    <property name="server.location" value="[email protected]:/home/uftwfssh" />
    <path id="master-classpath">
        <fileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" />
    </path>


    <target name="movexml" depends="clean">
        <copy todir="${user.home}/uft-workspace/DisasterReliefBatch/bin" overwrite="true">
            <fileset dir="${user.home}/uft-workspace/DisasterReliefBatch/src" includes="*.xml" />
            <mapper type="flatten" />
        </copy>

        <replace file="${user.home}/uft-workspace/DisasterReliefBatch/bin/config.xml" value="defaultvalue" propertyFile="name.properties">
            <replacefilter token="os400dataSource.url" property="os400dataSource.url" />
            <replacefilter token="os400dataSource.username" property="os400dataSource.username" />
            <replacefilter token="os400dataSource.password" property="os400dataSource.password" />

            <replacefilter token="mysqldataSource.url" property="mysqldataSource.url" />
            <replacefilter token="mysqldataSource.username" property="mysqldataSource.username" />
            <replacefilter token="mysqldataSource.password" property="mysqldataSource.password" />
        </replace>

        <replace file="${user.home}/uft-workspace/DisasterReliefBatch/bin/log4j.xml" value="defaultvalue" propertyFile="name.properties">
            <replacefilter token="email.to" property="email.to" />
            <replacefilter token="email.SMTPHost" property="email.SMTPHost" />
        </replace>
    </target>

    <target name="clean">
        <delete dir="${user.home}/uft-workspace/DisasterReliefBatch/bin" />
    </target>

    <target name="compile" depends="movexml">
        <mkdir dir="${user.home}/uft-workspace/DisasterReliefBatch/bin" />

        <javac destdir="${user.home}/uft-workspace/DisasterReliefBatch/bin">
            <src path="${user.home}/uft-workspace/DisasterReliefBatch/src" />
            <classpath refid="master-classpath" />
        </javac>

    </target>

    <target name="build" depends="compile">
        <jar destfile="${user.home}/DRB.jar">
            <manifest>
                <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader" />
                <attribute name="Rsrc-Main-Class" value="org.uftwf.batch.MainBatch" />
                <attribute name="Class-Path" value="." />
                <attribute name="Rsrc-Class-Path" value="./ commons-logging-1.1.1.jar mysql-connector-java-5.0.5.jar jt400Native.jar log4j-1.2.14.jar org.springframework.beans-3.0.6.RELEASE.jar org.springframework.core-3.0.6.RELEASE.jar org.springframework.jdbc-3.0.6.RELEASE.jar org.springframework.context-3.0.6.RELEASE.jar org.springframework.context.support-3.0.6.RELEASE.jar org.springframework.aspects-3.0.6.RELEASE.jar org.springframework.oxm-3.0.6.RELEASE.jar org.springframework.instrument.tomcat-3.0.6.RELEASE.jar commons-codec-1.4.jar httpclient-4.1.2.jar httpclient-cache-4.1.2.jar httpcore-4.1.2.jar httpmime-4.1.2.jar itext-xtra-5.1.3.jar itextpdf-5.1.3.jar jt400.jar junit-4.10.jar org.springframework.aop-3.0.6.RELEASE.jar org.springframework.asm-3.0.6.RELEASE.jar org.springframework.expression-3.0.6.RELEASE.jar org.springframework.instrument-3.0.6.RELEASE.jar org.springframework.jms-3.0.6.RELEASE.jar org.springframework.orm-3.0.6.RELEASE.jar org.springframework.test-3.0.6.RELEASE.jar org.springframework.transaction-3.0.6.RELEASE.jar org.springframework.web-3.0.6.RELEASE.jar org.springframework.web.portlet-3.0.6.RELEASE.jar org.springframework.web.servlet-3.0.6.RELEASE.jar org.springframework.web.struts-3.0.6.RELEASE.jar mail.jar mailapi.jar smtp.jar" />
            </manifest>

            <zipfileset src="${user.home}/jar-in-jar-loader.zip" />
            <fileset dir="${user.home}/uft-workspace/DisasterReliefBatch/bin" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="commons-logging-1.1.1.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="mysql-connector-java-5.0.5.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="jt400Native.jar" />
            <fileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch" includes="log4j-1.2.14.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.beans-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.core-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.jdbc-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.context-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.context.support-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.aspects-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.oxm-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.instrument.tomcat-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="commons-codec-1.4.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="httpclient-4.1.2.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="httpclient-cache-4.1.2.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="httpcore-4.1.2.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="httpmime-4.1.2.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="itext-xtra-5.1.3.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="itextpdf-5.1.3.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="jt400.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="junit-4.10.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.aop-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.asm-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.expression-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.instrument-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.jms-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.orm-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.test-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.transaction-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.web-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.web.portlet-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.web.servlet-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="org.springframework.web.struts-3.0.6.RELEASE.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="mail.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="mailapi.jar" />
            <zipfileset dir="${user.home}/uft-workspace/DisasterReliefBatch/lib" includes="smtp.jar" />
        </jar>


    </target>

    <target name="promote" depends="build">
        <input message="New version is going to be updated to 6dvjvm01 continue (y/n)?" validargs="y,n" addproperty="do.delete" />

        <condition property="do.abort">
            <equals arg1="n" arg2="${do.delete}" />
        </condition>

        <fail if="do.abort">Build aborted by user.</fail>

        <scp file="${user.home}/DRB.jar" todir="${server.location}" keyfile="${user.home}/.ssh/id_rsa" />
    </target>

    <target name="run" depends="build">
        <java jar="${user.home}/DRB.jar" fork="true" />
    </target>

    <target name="run-count" depends="build">
        <java jar="${user.home}/DRB.jar" fork="true">
            <arg value="count" />
        </java>
    </target>
</project>

Upvotes: 0

Views: 910

Answers (2)

PaoloC
PaoloC

Reputation: 4105

For the "SCP War to server" you can have a look at http://mojo.codehaus.org/wagon-maven-plugin/upload-mojo.html

To try it manually: mvn org.codehaus.mojo:wagon-maven-plugin:1.0:upload -Dwagon.url=scp://username:userpassword@myserver -Dwagon.fromDir=target -Dwagon.includes=*.ear -Dwagon.toDir=/home/elisabetta

In both cases, be sure to add the SSH extension for Wagon: <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>2.8</version> </extension> </extensions>

Upvotes: 0

drobert
drobert

Reputation: 1310

Yup. Properties-based injection is known in maven as 'resource filtering'. See http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-description.html.

Moving files around is rarely required in maven projects; you simply follow convention or declare additional 'source' paths for the compiler/war-assembly plugins.

I have never used maven to directly scp a war file to a server, however I would read over this thread as a resource: Maven copy local file to remote server using SSH

As a last-ditch effort, maven also has an 'antrun' plugin, allowing you to run custom ant tasks if need be. In your case, it should not be required, however.

Upvotes: 1

Related Questions