Difference between "seam restart" and "Build Ant File" in eclipse
ali1983 Jan 6, 2009 10:03 AMHello
I am facing a problem that when ever I run build.xml
from eclipse 3.4 it does not deploy a perfect copy of my project.
But when ever I use seam restart
from console on same project it deploys it in exploded form and it have all the contents which I have listed in build.xml
file.
Below is my Build.xml
<?xml version="1.0"?> <project name="OMS" default="deploy" basedir="."> <!-- Give user a chance to override without editing this file or typing -D --> <property file="${basedir}/build.properties" /> <property name="profile" value="dev" /> <property file="build-${profile}.properties" /> <!-- set global properties for this build --> <property name="project.name" value="OMS"/> <property name="dist.dir" value="dist" /> <property name="src.model.dir" value="src/model" /> <property name="src.action.dir" value="src/action" /> <property name="src.test.dir" value="src/test" /> <property name="src.hibernate.dir" value="src/hibernate" /> <property name="lib.dir" value="lib" /> <property name="ear.dir" value="exploded-archives/${project.name}.ear" /> <property name="jar.dir" value="exploded-archives/${project.name}.jar" /> <property name="war.dir" value="exploded-archives/${project.name}.war" /> <property name="test.dir" value="test-build" /> <property name="bootstrap.dir" value="${basedir}/bootstrap" /> <property name="deploy.dir" value="${jboss.home}/server/default/deploy" /> <property name="ear.deploy.dir" value="${deploy.dir}/${project.name}.ear" /> <property name="jar.deploy.dir" value="${ear.deploy.dir}/${project.name}.jar" /> <property name="war.deploy.dir" value="${ear.deploy.dir}/${project.name}.war" /> <property name="testng.jar" value="${basedir}/lib/testng.jar" /> <property name="javac.debug" value="true" /> <property name="javac.deprecation" value="false" /> <property name="debug" value="false" /> <!--Properties for validating configuration files --> <property name="validate.resources.dir" value="${basedir}/exploded-archives" /> <property name="schema.dir" value="${basedir}/exploded-archives/schemas" /> <property name="src.schema.dir" value="${schema.dir}/org/jboss/seam"/> <property name="schema.version" value="2.0" /> <fileset id="lib" dir="${lib.dir}"> <include name="*.jar" /> </fileset> <path id="build.classpath"> <fileset refid="lib" /> </path> <target name="init" description="Initialize the build"> <mkdir dir="${jar.dir}" /> <mkdir dir="${ear.dir}" /> <mkdir dir="${war.dir}" /> <mkdir dir="${dist.dir}" /> </target> <target name="compile" depends="init" description="Compile the Java source code" unless="eclipse.running"> <javac classpathref="build.classpath" destdir="${jar.dir}" debug="${javac.debug}" deprecation="${javac.deprecation}" nowarn="on"> <src path="${src.model.dir}" /> <src path="${src.action.dir}" /> <src path="${src.hibernate.dir}" /> </javac> </target> <target name="copyclasses" depends="init" description="Copy the classes that were compiled by eclipse" if="eclipse.running"> <copy todir="${jar.dir}"> <fileset dir="classes/model"> <include name="**/*.class"/> </fileset> <fileset dir="classes/action"> <include name="**/*.class"/> </fileset> <fileset dir="classes/hibernate"> <include name="**/*.class"/> <include name="**/*.xml"/> </fileset> </copy> </target> <target name="jar" depends="compile,copyclasses" description="Build the distribution .jar file"> <copy todir="${jar.dir}"> <fileset dir="${basedir}/resources"> <include name="seam.properties" /> <include name="*.drl" /> </fileset> </copy> <copy todir="${jar.dir}/META-INF"> <fileset dir="${basedir}/resources/META-INF"> <include name="ejb-jar.xml" /> </fileset> </copy> <copy tofile="${jar.dir}/META-INF/persistence.xml" file="${basedir}/resources/META-INF/persistence-${profile}.xml" overwrite="true"/> <copy tofile="${jar.dir}/import.sql" file="${basedir}/resources/import-${profile}.sql" overwrite="true"/> </target> <target name="war" depends="compile" description="Build the distribution .war file"> <copy todir="${war.dir}"> <fileset dir="${basedir}/view" /> </copy> <copy todir="${war.dir}/WEB-INF"> <fileset dir="${basedir}/resources/WEB-INF"> <include name="*.*"/> <include name="classes/**/*.*"/> <exclude name="classes/**/*.class"/> </fileset> <filterset> <filter token="debug" value="${debug}" /> <filter token="jndiPattern" value="${project.name}/#{ejbName}/local" /> </filterset> </copy> <copy todir="${war.dir}/WEB-INF"> <fileset dir="${basedir}/resources/WEB-INF"> <include name="lib/*.*"/> <include name="classes/**/*.class"/> </fileset> </copy> <copy todir="${war.dir}/WEB-INF/lib"> <fileset dir="${lib.dir}"> <include name="richfaces-impl*.jar" /> <include name="richfaces-ui*.jar" /> <include name="oscache*.jar" /> <include name="commons-digester.jar" /> <include name="commons-beanutils.jar" /> <include name="jsf-facelets.jar" /> <include name="jboss-seam-*.jar" /> <exclude name="jboss-seam-gen.jar" /> </fileset> </copy> <copy todir="${war.dir}/WEB-INF/classes"> <fileset dir="${basedir}/resources"> <include name="messages*.properties"/> </fileset> </copy> </target> <target name="ear" description="Build the EAR"> <copy todir="${ear.dir}"> <fileset dir="${basedir}/resources"> <include name="*jpdl.xml" /> <include name="*hibernate.cfg.xml" /> <include name="jbpm.cfg.xml" /> </fileset> <fileset dir="${lib.dir}"> <include name="jboss-seam.jar" /> </fileset> <fileset dir="${basedir}"> <include name="lib/jbpm*.jar" /> <include name="lib/jboss-el.jar" /> <include name="lib/drools-*.jar"/> <include name="lib/core.jar"/> <include name="lib/janino*.jar"/> <include name="lib/antlr-*.jar"/> <include name="lib/mvel*.jar"/> <include name="lib/richfaces-api*.jar" /> <include name="lib/richfaces-impl*.jar" /> <include name="lib/richfaces-ui*.jar" /> </fileset> </copy> <copy todir="${ear.dir}/META-INF"> <fileset dir="${basedir}/resources/META-INF"> <include name="application.xml" /> <include name="jboss-app.xml" /> </fileset> </copy> <copy todir="${ear.dir}/"> <fileset dir="${src.hibernate.dir}"> <include name="**/*.xml" /> </fileset> </copy> </target> <target name="archive" depends="jar,war,ear" description="Package the archives"> <jar jarfile="${dist.dir}/${project.name}.jar" basedir="${jar.dir}"/> <jar jarfile="${dist.dir}/${project.name}.war" basedir="${war.dir}"/> <jar jarfile="${dist.dir}/${project.name}.ear"> <fileset dir="${ear.dir}"/> <fileset dir="${dist.dir}"> <include name="${project.name}.jar"/> <include name="${project.name}.war"/> </fileset> </jar> </target> <target name="datasource"> <fail unless="jboss.home">jboss.home not set</fail> <copy todir="${deploy.dir}"> <fileset dir="${basedir}/resources"> <include name="${project.name}-${profile}-ds.xml" /> </fileset> </copy> </target> <target name="explode" depends="jar,war,ear,datasource" description="Deploy the exploded archive"> <fail unless="jboss.home">jboss.home not set</fail> <mkdir dir="${jar.deploy.dir}"/> <mkdir dir="${war.deploy.dir}"/> <copy todir="${jar.deploy.dir}"> <fileset dir="${jar.dir}"/> </copy> <copy todir="${war.deploy.dir}"> <fileset dir="${war.dir}"/> </copy> <copy todir="${ear.deploy.dir}"> <fileset dir="${ear.dir}"/> </copy> </target> <target name="unexplode" description="Undeploy the exploded archive"> <delete failonerror="no"> <fileset dir="${ear.deploy.dir}"> <exclude name="**/*.jar"/> </fileset> </delete> <delete file="${deploy.dir}/${project.name}-${profile}-ds.xml" failonerror="no"/> <delete dir="${ear.deploy.dir}" failonerror="no"/> </target> <target name="restart" depends="explode" description="Restart the exploded archive"> <touch file="${ear.deploy.dir}/META-INF/application.xml"/> </target> <target name="deploy" depends="archive,datasource" description="Deploy to JBoss AS"> <fail unless="jboss.home">jboss.home not set</fail> <copy todir="${deploy.dir}" file="${dist.dir}/${project.name}.ear" /> </target> <target name="undeploy" description="Undeploy the example from JBoss"> <delete file="${deploy.dir}/${project.name}.ear" /> <delete file="${deploy.dir}/${project.name}-dev-ds.xml" /> <delete file="${deploy.dir}/${project.name}-prod-ds.xml" /> </target> <target name="clean" description="Cleans up the build directory"> <delete dir="${dist.dir}"/> <delete dir="${ear.dir}"/> <delete dir="${war.dir}"/> <delete dir="${jar.dir}"/> <delete dir="${src.schema.dir}" failonerror="no"/> <delete dir="${basedir}/test-report"/> <delete dir="${basedir}/test-output"/> <delete failonerror="no"> <fileset dir="${test.dir}"> <exclude name="**/*.class" if="eclipse.running"/> </fileset> </delete> </target> <target name="compiletest" unless="eclipse.running" description="Compile the Java source code for the tests"> <mkdir dir="${test.dir}"/> <javac classpathref="build.classpath" destdir="${test.dir}" debug="${javac.debug}" deprecation="${javac.deprecation}" nowarn="on"> <src path="${src.action.dir}" /> <src path="${src.model.dir}" /> <src path="${src.test.dir}" /> </javac> </target> <target name="copytestclasses" if="eclipse.running" description="Copy classes compiled by eclipse to the test dir"> <mkdir dir="${test.dir}"/> <copy todir="${test.dir}"> <fileset dir="classes/model"> <include name="**/*.class"/> </fileset> </copy> <copy todir="${test.dir}"> <fileset dir="classes/action"> <include name="**/*.class"/> </fileset> </copy> <copy todir="${test.dir}"> <fileset dir="classes/test"> <include name="**/*.class"/> </fileset> </copy> </target> <target name="buildtest" depends="compiletest,copytestclasses" description="Build the tests"> <copy todir="${test.dir}"> <fileset dir="${basedir}/resources"> <exclude name="META-INF/persistence*.xml"/> <exclude name="import*.sql"/> <exclude name="${project.name}-*-ds.xml"/> </fileset> </copy> <copy tofile="${test.dir}/META-INF/persistence.xml" file="${basedir}/resources/META-INF/persistence-test.xml" overwrite="true"/> <copy tofile="${test.dir}/import.sql" file="${basedir}/resources/import-test.sql" overwrite="true"/> <copy todir="${test.dir}" flatten="true"> <fileset dir="${src.test.dir}"> <include name="**/*Test.xml" /> </fileset> </copy> </target> <target name="test" depends="buildtest" description="Run the tests"> <taskdef resource="testngtasks" classpath="${testng.jar}" /> <path id="test.path"> <path path="${test.dir}" /> <fileset dir="${lib.dir}/test"> <include name="*.jar"/> </fileset> <path path="${bootstrap.dir}" /> <path refid="build.classpath" /> </path> <testng outputdir="${basedir}/test-report"> <classpath refid="test.path" /> <xmlfileset dir="${test.dir}" includes="*Test.xml" /> </testng> </target> <target name="validateConfiguration" depends="war,ear,jar" description="Validate the xml configuration files"> <mkdir dir="${schema.dir}"/> <unjar src="${lib.dir}/jboss-seam.jar" dest="${schema.dir}"> <patternset> <include name="org/jboss/seam/*.xsd"/> <include name="org/jboss/seam/*.dtd"/> </patternset> </unjar> <ant antfile="validate.xml" target="validateConfiguration" /> </target> </project>
and my project hierarchy in eclipse is
OMS(Project Root)
src/action(src folder)
com.oms.action.auth(This package contains Seam Identity Code
)
com.oms.action.rms(This package contains my Session Beans)
src/hibernate(src folder)
com.oms.hibernate.rms.mapping(This package contains hibernate generated mappings)
com.oms.hibernate.rms.service(This package contains service which contains HQL)
hibernate.cgf.xml
Now the problem is that whenever I use build.xml from eclipse it only deploy following block
src/action(src folder)
com.oms.action.auth(This package contains Seam Identity Code
)
and if i use seam restart
all thing go fine and every package is deployed accordingly.
Please let me know that what do i have to do.
Thanks