ant编译build.xml文件

ant编译build.xml文件,第1张

折腾了大半天,可算捣腾出来了,这里需要提醒注意如下几点:

1、如果jdk是1.6及以下,则需要使用的ant版本是1.9.x;

2、如果jdk是1.8,则需要使用ant版本是1.10.x;

3、可用eclipse导出war包,将lib目录下的jar包放到一个目录下,然后直接引用,避免遗漏掉jar包没导入进去。

以下是build.xml文件内容,安装好ant后,直接执行ant build.xml即可打包。

<?xml version="1.0" encoding="UTF-8"?>

<!-- 定义一个工程,默认任务为warFile。 -->

<project name="bing-info" default="warFile" basedir=".">

    <!-- 指定jdk 貌似这里指定也没什么用~-->

    <property name="env.JAVA_HOME" value="C:/Program Files/Java/jdk1.8.0_101"/>

    <!-- 定义属性,打成war包的名称。 -->

    <property name="warFileName" value="nbAPP.war"></property>

    <!-- 指定war包路径及依赖包路径   这里需要指定工程的路径 -->

    <property name="compilePath" value="D:/project/nbAPP"/>

    <!-- 定义路径,编译java文件时用到的jar包。 -->

    <path id="project.lib">

        <fileset dir="${basedir}/lib">

            <include name="**/*.jar"/>

        </fileset>

    </path>

    <!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 -->

    <target name="clean">

        <delete dir="${compilePath}/build" />

        <mkdir dir="${compilePath}/build" />

    </target>

    <!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下。 -->

    <target name="compile" depends="clean">

        <javac srcdir="${basedir}/src/main" debug="true" includeantruntime="false" encoding="UTF-8" >

            <classpath refid="project.lib">

            </classpath>

        </javac>

    </target>

    <!-- 定义默认任务,将class文件集合成jar包。 -->

    <target name="warFile" depends="compile">

        <!-- 删除原有war包。 -->

        <delete dir="${compilePath}/${warFileName}" />

        <!-- 建立新war包。 -->

        <war destfile="${compilePath}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">

            <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->

            <fileset dir="${basedir}/WebRoot">

                <include name="**/**.*" />

                <exclude name="**/*.jar"/>

                <include name="WEB-INF/classes/**"/>

            </fileset>

            <!-- 将jar和class文件拷贝到war包的对应路径下。 -->

            <lib dir="${compilePath}/lib" />

            <classes dir="${compilePath}/build" />

            <!-- 将资源文件拷贝进war对应路径下 -->

            <classes dir="${basedir}/src/main/resources" />

        </war>

    </target>

</project>

ant是apache项目组的一个子项目,是一个基于java的构建工具。ant本身用java实现,要构建的工程的配置文件用xml格式描述,可以很方便的实现跨平台构建工作。

ant 可以从http://ant.apache.org下载,目前最新版本为1.5.4。下载完毕后直接解压缩到一个目录,例如D:\ant。

下一步我们需要设置如下的环境变量:

ANT_HOME:ant的安装目录,如果按上面方法解压缩了ant,那么这个值应该设为D:\ant

JAVA_HOME:jdk的安装目录

PATH:把%ANT_HOME%\bin目录加到path变量,以便于从命令行直接运行ant。

(1)建立build.xml

用ant编译规模较大的工程非常方便,每个工程都对应一个build.xml文件,这个文件包含与这个工程有关的路径信息和构建任务。

下面是一个最简单的build.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<project name="projectTemplate" default="init" basedir=".">

<target name="init" >

<property name="lib.dir" value="lib"/>

<echo message="Hello ,lib.dir is set to ${lib.dir}" >

</echo>

</target>

</project>

每个build.xml有且仅有一个project,每个project下面可以包含多个target,每个target表示一个小的任务,每个任务负责执行一段脚本。ant有内置任务集可供使用,例如上面的echo就是在console上显示消息。

更详细的内置任务请参考http://ant.apache.org/manual/coretasklist.html

${lib.dir}表示引用一个名字叫做lib.dir的属性值,这个属性的值就是lib。

(2)运行ant

使用ant.bat可以直接运行ant,如果不带任何参数,ant会在当前路径下搜索build.xml文件,如果找到了这个文件,就运行project的default属性指定的target.我们也可以带参数来运行ant,以便选择build.xml文件和要运行的target:

ant -buildfile c:\demo\build.xml init

表示运行c:\demo\build.xml 中名字为init的target

(3)ant的目标依赖

target有一个属性depends,在其中可以指定一系列的target名字,表示在执行该target前,必须首先执行的一系列其它target。depends具有传递性,例如:targetA depends targetB,而targetB depends targetC和targetD,这样在执行targetA之前,首先执行C和D,然后执行B,最后才会执行A。

下面是个简单的例子,在执行编译的动作前,首先需要建立一个目标代码存放的目录,然后再执行编译。

<?xml version="1.0" encoding="ISO-8859-1"?>

<project name="project" default="init" basedir=".">

<target name="init" >

<property name="dist" value="dist"/>

<mkdir dir="${dist}" />

</target>

<target name="build" depends="init">

<javac srcdir="SourceCode" destdir="${dist}">

</javac>

</target>

</project>

不是代码的问题,是你引包出现的问题。给的报错已经很明显了,EntityDaoHibernate类和EntityDaoHibernate类都有findByHql方法,且签名相同。检查你javac标签下的classpath有没有引错包。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12084774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存