zoukankan      html  css  js  c++  java
  • 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包

    <?xml version="1.0" encoding="GB2312"?>
    <project name="CardInfo-WebApp" default="build_all" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
    	
    	<property file="build.properties"/>
    	
    	<target name="build_all" depends="zip, war, war_patch, zip_library" description="build project and create zip file of publish.">
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" excludes="/*.zip, /*.war" />
    	</target>
    	
    	<target name="build_app" depends="zip" description="build project and create zip file of publish.">
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" excludes="/*.zip" />
    	</target>
    	
    	<target name="build_war" depends="war" description="build project and create war file of publish.">
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" excludes="/*.war" />
    	</target>
    	
    	<target name="build_war_patch" depends="war_patch" description="build project and create war file of publish.">
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" excludes="/*.war" />
    	</target>
    	
    	<target name="build_library" depends="zip_library" description="copy jar resource and create zip file.">
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" excludes="/*.zip" />
    	</target>
    	
    	<tstamp prefix="build.">
    		<format property="time" pattern="yyyy-MM-dd HH:mm" />
    		<format property="timestamp" pattern="yyyyMMddHHmm"/>
    	</tstamp>
    	
    	<target name="init_maven">
    		<echo message="init maven config. local repository is: ${M2_REPO}"/>
    		<path id="maven-ant-tasks.classpath" path="${M2_REPO}/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar" />
    		<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" />
    		
    		<artifact:localRepository id="local.repository" path="${M2_REPO}"/>
    		
    		<artifact:pom id="maven.project" file="pom.xml" />
    		
    		<artifact:dependencies pathId="classpath.build" filesetid="maven.fileset.build">
    			<localRepository refid="local.repository"/>
    			<pom refid="maven.project" />
    		</artifact:dependencies>
    
    		<artifact:dependencies pathId="classpath.runtime" filesetid="maven.fileset.runtime" usescope="runtime">
    			<localRepository refid="local.repository"/>
    			<pom refid="maven.project"/>
    		</artifact:dependencies>
    		
    		<artifact:dependencies pathId="classpath.provided" filesetid="maven.fileset.provided" scopes="provided">
    			<localRepository refid="local.repository"/>
    			<pom refid="maven.project" />
    		</artifact:dependencies>
    	</target>
    
    	<target	name="init_path" depends="init_maven">
    		<echo>*********************************</echo>
    		<echo>Maven build project base directory is ${maven.project.basedir}</echo>
    		<echo>Maven build project source directory is ${maven.project.build.sourceDirectory}</echo>
    			
    		<echo>*********************************</echo>
    		<property name="project.application.basedir" value="${maven.project.basedir}/Application" />
    		<echo>Maven build project application directory is ${project.application.basedir}</echo>
    		
    		<property name="project.path.tools" value="${project.application.basedir}}/tools"/>
    		<echo>Maven build project application tools directory is ${project.path.tools}</echo>
    		
    		<property name="project.path.webapps" value="${project.application.basedir}/webapps"/>
    		<echo>Maven build project application webapps directory is ${project.path.webapps}</echo>
    		<property name="project.path.webapps.webinf" value="${project.path.webapps}/WEB-INF"/>
    		
    		<property name="project.path.conf" value="${project.path.webapps.webinf}/conf"/>
    		<echo>Maven build project application conf directory is ${project.path.conf}</echo>
    		
    		<property name="project.path.lib" value="${project.path.webapps.webinf}/lib"/>
    		<echo>Maven build project application jar lib directory is ${project.path.lib}</echo>
    		
    		<property name="project.path.log" value="${project.path.webapps.webinf}/log"/>
    		<echo>Maven build project application log directory is ${project.path.log}</echo>
    		
    		<property name="project.path.workspace" value="${project.path.webapps.webinf}/workspace"/>
    		<echo>Maven build project application workspace directory is ${project.path.workspace}</echo>
    
    		<echo>*********************************</echo>
    		<property name="target.basedir" value="${maven.project.basedir}/target"/>
    		<mkdir dir="${target.basedir}"/>
    		<echo>Maven build target base directory is ${target.basedir}</echo>
    		
    		<property name="target.path.build" value="${target.basedir}/build"/>
    		<mkdir dir="${target.path.build}"/>
    		<echo>Maven build target build directory is ${target.path.build}</echo>
    		
    		<property name="target.path.classes" value="${target.path.build}/classes"/>
    			<mkdir dir="${target.path.classes}"/>
    		<echo>Maven build target classes directory is ${target.path.classes}</echo>
    		
    		<property name="target.path.tools" value="${target.path.build}/tools"/>
    		<mkdir dir="${target.path.tools}"/>
    		<echo>Maven build target tools directory is ${target.path.tools}</echo>
    		
    		<property name="target.path.webapps" value="${target.path.build}/webapps"/>
    		<mkdir dir="${target.path.webapps}"/>
    		<echo>Maven build target webapps directory is ${target.path.webapps}</echo>
    		
    		<property name="target.path.webapps.webinf" value="${target.path.webapps}/WEB-INF"/>
    		<mkdir dir="${target.path.webapps.webinf}"/>
    		
    		<property name="target.path.conf" value="${target.path.webapps.webinf}/conf"/>
    		<mkdir dir="${target.path.conf}"/>
    		<echo>Maven build target conf directory is ${target.path.conf}</echo>
    		
    		<property name="target.path.lib" value="${target.path.webapps.webinf}/lib"/>
    		<mkdir dir="${target.path.lib}"/>
    		<echo>Maven build target lib directory is ${target.path.lib}</echo>
    		
    		<property name="target.path.log" value="${target.path.webapps.webinf}/log"/>
    		<mkdir dir="${target.path.log}"/>
    		<echo>Maven build target log directory is ${target.path.log}</echo>
    		
    		<property name="target.path.webapps.classes" value="${target.path.webapps.webinf}/classes"/>
    		<mkdir dir="${target.path.webapps.classes}"/>
    		
    		<property name="target.path.webapps.template" value="${target.path.webapps.webinf}/template"/>
    		<mkdir dir="${target.path.webapps.template}"/>
    		<echo>Maven build target template directory is ${target.path.webapps.template}</echo>
    		
    		<property name="target.path.workspace" value="${target.path.webapps.webinf}/workspace"/>
    		<mkdir dir="${target.path.workspace}"/>
    		<echo>Maven build target workspace directory is ${target.path.workspace}</echo>
    	</target>
    	
    	<target name="init_build_var" depends="init_maven">
    		<property name="compile.debug" value="false" />
    		<property name="compile.deprecation" value="false" />
    		<property name="compile.optimize" value="true" />
    		<property name="compile.encoding" value="UTF-8" />
    		<property name="compile.sourceversion" value="1.6" />
    		<property name="compile.targetversion" value="1.6" />
    		
    		<property name="build.version" value="${maven.project.version}-Build${build.timestamp}"/>
    		<echo>Maven build version is ${build.version}</echo>
    		
    		<property name="patch.version" value="${maven.project.version}-Patch${build.timestamp}"/>
    		<echo>Maven build version is ${build.version}</echo>
    		
    		<property name="build.jar.name" value="${maven.project.artifactId}.jar" />
    		<echo>Maven build target zip file name is ${build.zip.name}</echo>
    
    		<property name="build.zip.name" value="${maven.project.artifactId}-${build.version}.zip" />
    		<echo>Maven build target zip file name is ${build.zip.name}</echo>
    		
    		<property name="build.war.name" value="${maven.project.artifactId}-${build.version}.war" />
    		<echo>Maven build target war file name is ${build.war.name}</echo>
    		
    		<property name="patch.war.name" value="${maven.project.artifactId}-${patch.version}.war" />
    		<echo>Maven build target patch-war file name is ${patch.war.name}</echo>
    	</target>
    	
    	<target name="compile" description="compile java source to target classes path." depends="init_path, init_build_var">
    		<echo>compile java source.</echo>
    		<echo>source version is ${compile.sourceversion}</echo>
    		<echo>target version is ${compile.targetversion}</echo>
    		<javac srcdir="${maven.project.build.sourceDirectory}" destdir="${target.path.webapps.classes}"
    			source="${compile.sourceversion}" target="${compile.targetversion}"
    			description="${compile.deprecation}" optimize="${compile.optimize}"
    			debug="${compile.debug}" encoding="${compile.encoding}"
    		>
    			<classpath refid="classpath.build"/>
    			<classpath refid="classpath.provided"/>
    			<classpath refid="classpath.runtime"/>
    		</javac>
    		<!-- jar destfile="${target.path.lib}/${build.jar.name}" basedir="${target.path.classes}">
    			<manifest>
    				<attribute name="Version" value="${maven.project.version}" />
    				<attribute name="Build-by" value="${build.timestamp}" />
    			</manifest>
    		</jar -->
    	</target>
    	
    	<target name="copy_library" description="copy jar library to target lib path" depends="init_path">
    		<copy todir="${target.path.lib}">
    			<fileset refid="maven.fileset.runtime"/>
    			<fileset dir="${project.path.lib}" />
    			<mapper type="flatten" />
    		</copy>
    	</target>
    	
    	<target name="copy_resource" description="copy resource file to target classes path" depends="init_path">
    		<copy todir="${target.path.webapps.classes}" includeemptydirs="false">
    			<fileset dir="${maven.project.build.sourceDirectory}">
    				<exclude name="**/*.java"/>
    			</fileset>
    		</copy>
    		<copydir dest="${target.path.webapps}" src="${project.path.webapps}" excludes="/WEB-INF/**/*"/>
    		<copydir dest="${target.path.webapps.webinf}" src="${project.path.webapps.webinf}">
    			<exclude name="/classes/**/*"/>
    			<exclude name="/work/**/*"/>
    			<exclude name="/tmp/**/*"/>
    			<exclude name="/temp/**/*"/>
    		</copydir>
    		<copydir dest="${target.path.build}" src="${project.application.basedir}">
    			<exclude name="/webapps/**/*"/>
    			<exclude name="/${target.path.classes}"/>
    		</copydir>
    	</target>
    	<target name="copy_resource_noconfig" description="copy resource file to target classes path" depends="init_path">
    		<copy todir="${target.path.webapps.classes}">
    			<fileset dir="${maven.project.build.sourceDirectory}">
    				<exclude name="**/*.java"/>
    			</fileset>
    		</copy>
    		<copydir dest="${target.path.webapps}" src="${project.path.webapps}" excludes="/WEB-INF/**/*"/>
    		<copydir dest="${target.path.webapps.webinf}" src="${project.path.webapps.webinf}">
    			<exclude name="/classes/**/*"/>
    			<exclude name="/work/**/*"/>
    			<exclude name="/tmp/**/*"/>
    			<exclude name="/temp/**/*"/>
    			<exclude name="/conf/**/*"/>
    			<exclude name="/log/**/*"/>
    			<exclude name="/workspace/**/*"/>
    			<exclude name="/lib/**/*"/>
    		</copydir>
    		<copydir dest="${target.path.build}" src="${project.application.basedir}">
    			<exclude name="/webapps/**/*"/>
    			<exclude name="/${target.path.classes}"/>
    		</copydir>
    	</target>
    		
    	<target	name="clean" description="clean build directory." depends="init_path">
    		<echo>clean	build directory	: ${target.basedir}</echo>
    		<delete includeemptydirs="true" dir="${target.basedir}" includes="**/*" />
    	</target>
    	
    	<target name="zip" description="create published zip file" depends="init_path, init_build_var, compile, copy_library, copy_resource">
            <zip destfile="${target.basedir}/${build.zip.name}">
                <fileset dir="${target.path.build}"></fileset>
            </zip>
        </target>
    	<target name="zip_library" description="create published zip file" depends="init_path, init_build_var, copy_library">
    		<zip destfile="${target.basedir}/library.zip">
                <fileset dir="${target.path.lib}"></fileset>
            </zip>
        </target>
    	
    	<target name="war" description="create published war file" depends="init_path, init_build_var, compile, copy_library, copy_resource">
    		<war destfile="${target.basedir}/${build.war.name}">
    			<fileset dir="${target.path.webapps}"></fileset>
    			<manifest>
    				<attribute name="Version" value="${maven.project.version}" />
    				<attribute name="Build-by" value="${build.timestamp}" />
    			</manifest>
    		</war>
    	</target>
    	
    	<target name="war_patch" description="create published war file for update" depends="init_path, init_build_var, compile, copy_resource_noconfig">
    		<war destfile="${target.basedir}/${patch.war.name}">
    			<fileset dir="${target.path.webapps}"></fileset>
    			<manifest>
    				<attribute name="Version" value="${maven.project.version}" />
    				<attribute name="Build-by" value="${build.timestamp}" />
    			</manifest>
    		</war>
    	</target>
    </project>


  • 相关阅读:
    代码的未来
    shell脚本中的[]/[[]]区别
    shell脚本判断文件类型
    muduo库安装
    protobuf安装
    讲给普通人听的分布式数据存储(转载)
    Oracle OCCI学习之开篇
    浅谈MySQL索引背后的数据结构及算法(转载)
    5.7版本mysql查询报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:...this is incompatible with sql_mode=only_full_group_by
    IDEA启动tomcat报错:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext、ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3161451.html
Copyright © 2011-2022 走看看