我为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)。
我已阅读问题error while including external JARs in ant script,解决方案是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;
有没有办法将property
设置为tomcat apache/lib
目录,从persay a .property
文件开始?我在build_impl.xml
中看到了(由netbeans生成,在-init-private
目标中包含了属性文件)。
<target depends="-pre-init" name="-init-private">
<property file="nbproject/private/private.properties"/>
</target>
但我不确定如何获取build.xml
的这些属性的访问权限。但基本上我正在寻找一个生成apache-tomcat\lib
目录的相对路径的解决方案,并成功编译类文件而不会丢失包。
答案 0 :(得分: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" />
并使用例如as(这只是一个例子,调整正确用法):
<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>
答案 1 :(得分: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>