0

我已经为 netbeans 项目编写了一个build.xml更新时间 8:49 PM)。而且我发现serlvet-api.jar目录中的tomcat库等C:\apache-tomcat-7.0.35\lib。但我不确定我是如何将target="class_compile"使用连接fieldset dir到 tomcat 目录的(每次我希望从另一台计算机编译时不更改 build.xml)。

在 ant script 中包含外部 JAR 时阅读了问题错误,解决方案是元素中缺少classpathref属性javac(尽管我的classpathref属性似乎是正确的)。

<path id="build.classpath">
    <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<target name="class_compile" depends="prepare" description="Compile the whole project">
    <javac destdir="${build.classes}" 
            debug="${debug}" 
            deprecation="on"
            optimize="off"
            srcdir="${src.dir}"
            classpathref="build.classpath"
            includes="*/**"
    />
    <copy todir="${build.classes}">
        <fileset dir="${src.dir}" includes="**/*.properties"/>
    </copy>
</target>

<target name="prepare">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>
    <path id="run.classpath" >
        <pathelement location="${build.classes}" />
    </path>
    <mkdir dir="${build.lib}"/>
    <mkdir dir="${qa.dir}"/>
</target>

目前,一旦class_compile执行目标,就会报告有关丢失类文件的多个错误。

emma:
Created dir: C:\capstonegroup3\TTTserver\build\emma-instr
Created dir: C:\capstonegroup3\TTTserver\build\emma-reports
prepare:
Created dir: C:\capstonegroup3\TTTserver\build\classes
Created dir: C:\capstonegroup3\TTTserver\build\lib
Created dir: C:\capstonegroup3\TTTserver\build\qa-reports
class_compile:
C:\capstonegroup3\TTTserver\build.xml:152: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
Compiling 21 source files to C:\capstonegroup3\TTTserver\build\classes
C:\capstonegroup3\TTTserver\src\java\AuthServer\AuthenticationInterface.java:8: error: package javax.servlet.http does not exist
import javax.servlet.http.HttpServletRequest;

有没有办法从 persay文件property中设置目录?我在我的(由netbeans 生成,在目标期间包含一个属性文件)中看到了。tomcat apache/lib.propertybuild_impl.xml-init-private

<target depends="-pre-init" name="-init-private">
    <property file="nbproject/private/private.properties"/>
</target>

但我不确定如何为我的build.xml. 但基本上我正在寻找一个生成apache-tomcat\lib目录的相对路径并成功编译类文件而不会丢失包的解决方案。

4

2 回答 2

2

我喜欢做的是local.properties在项目文件夹的父文件夹中(例如在 NetBeansProjects 下)保留一个描述我的本地环境的文件,例如:

NetBeansProjects
+- local.properties
+- MyProject
   +- build.xml
   +- <other stuff>

build.xml就像:

tomcat.home=/C:/java/tomcat
gwt.dir=/C:/java/google/gwt-2.5.1

该文件不受版本控制,允许每个开发人员配置他/她自己的环境。Ant 使用以下内容读取它:

<property file="../local.properties" />

并用作例如(这只是一个示例,请调整以正确使用):

<path id="project.classpath">
    <pathelement path="war/WEB-INF/classes" />
    <fileset dir="war/WEB-INF/lib">
        <include name="*.jar" />
    </fileset>
    <fileset dir="${tomcat.home}/lib"><!-- tomcat.home defined in local.properties -->
        <include name="**/*.jar" />
    </fileset>
</path>
于 2013-09-11T09:17:01.807 回答
2

您应该将 servlet-api.jar 文件声明为 build.classpath,如下所示

<path id="build.classpath">
    <fileset dir="C:/apache-tomcat-7.0.35/lib">
        <include name="servlet-api.jar" />
    </fileset>
    <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
    </fileset>
</path>
于 2013-09-11T09:42:14.993 回答