我有一个可以正常工作的build.xml,直到我开始使用样板生成并创建一个Generator。
在开发模式下一切正常,但是,我无法为我的应用程序生成一场战争。
我认为这是因为gen类要转到/apt_generated
,而不是/src
,而我的蚂蚁编译/src
,我对发电机一无所知。
我只是想让它发挥作用,但我做不到。
有人可以帮助我吗?
我的build.xml就像这样:
<property name="version" value="1.0.0-SNAPSHOT"/>
<property name="gwt.module.name" value="com.test.Test"/>
<property name="server.resources.name" value="server_resources"/>
<property name="jar.name" value="test${version}.jar"/>
<property name="war.name" value="test${version}.war"/>
<property name="src.dir" location="src"/>
<property name="server.resources.dir" location="war/${server.resources.name}"/>
<property name="build.dir" location="build"/>
<property name="build.server.resources.dir" location="war/WEB-INF/classes/server_resources"/>
<property name="lib.dir" location="war/WEB-INF/lib"/>
<property name="gwt.client.dir" location="com/test/client"/>
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="prepare">
<mkdir dir="${build.dir}"/>
</target>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Compile the java source code using javac -->
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="project.classpath"/>
</javac>
</target>
<!-- Invoke the GWT compiler to create the Javascript for us -->
<target name="gwt-compile" depends="compile">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<!-- src dir is added to ensure the module.xml file(s) are on the classpath -->
<pathelement location="${src.dir}"/>
<pathelement location="${build.dir}"/>
<path refid="project.classpath"/>
</classpath>
<jvmarg value="-Xmx512M"/>
<arg value="${gwt.module.name}"/>
</java>
</target>
<!-- Package the compiled Java source into a JAR file -->
<target name="jar" depends="compile">
<jar jarfile="${lib.dir}/${jar.name}" basedir="${build.dir}/">
<!-- Don't wrap any of the client only code into the JAR -->
<exclude name="${gwt.client.dir}/**/*.class"/>
</jar>
</target>
<!-- Copy the static server resources into the required
directory ready for packaging -->
<target name="copy-resources">
<copy todir="${build.server.resources.dir}" preservelastmodified="true">
<fileset dir="${server.resources.dir}"/>
</copy>
</target>
<!-- Package the JAR file, Javascript, static resources
and external libraries into a WAR file -->
<target name="war" depends="gwt-compile, jar, copy-resources">
<war basedir="war" destfile="${war.name}" webxml="war/WEB-INF/web.xml">
<exclude name="WEB-INF/**" />
<exclude name="${server.resources.name}/**"/>
<webinf dir="war/WEB-INF/">
<include name="classes/${server.resources.name}/**" />
<include name="**/*.jar" />
<!-- <exclude name="**/gwt-dev.jar" /> -->
<exclude name="**/gwt-user.jar" />
</webinf>
</war>
</target>
</project>
错误:
[javac] D:\CARLOS\workspaces\Test\Test\src\com\test\server\actionhandlers\autenticar\RecuperarSenhaActionHandler.java:50: cannot find symbol
[javac] symbol : class RecuperarSenhaAction
[javac] location: class com.test.server.actionhandlers.autenticar.RecuperarSenhaActionHandler
[javac] public void undo(RecuperarSenhaAction arg0, RecuperarSenhaResult arg1, ExecutionContext arg2) throws ActionException
[javac] D:\CARLOS\workspaces\Test\Test\src\com\test\server\i18n\EnumMessageGenerator.java:84: cannot find symbol
[javac] symbol : class SourceWriter
[javac] location: class com.test.server.i18n.EnumMessageGenerator
[javac] SourceWriter sw = composer.createSourceWriter(context, printWriter);
[javac] ^
[javac] 15 errors
EDIT。
我修改了我的build.xml,现在,我还有一个属性<property name="apt_generated.dir" location="apt_generated" />
,我的编译目标就变成了这个:
<target name="compile" depends="prepare">
<javac destdir="${build.dir}">
<src location="${src.dir}" />
<src location="${apt_generated.dir}" />
<classpath refid="project.classpath" />
</javac>
</target>
用apt_generated“解决”问题(我认为),但我仍然无法构建它,因为SourceWriter和javax.validation类的错误。
答案 0 :(得分:2)
生成的类也需要编译。由于我没有在您的示例中看到任何代码生成,因此我只假设了以下值。
<target name="compile" depends="prepare">
<-- compile generated classes-->
<javac srcdir="${apt_generated.dir}" destdir="${build.generated.dir}">
<classpath refid="project.classpath"/>
</javac>
<-- compile sources -->
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath location="${build.generated.dir}"/>
<classpath refid="project.classpath"/>
</javac>
</target>
如评论中所述,生成的类依赖于源,反之亦然,因此您需要:
第二个可以完成如下:
<target name="compile" depends="prepare">
<javac destdir="${build.dir}">
<src location="${src.dir}" />
<src location="${apt_generated.dir}" />
<classpath refid="project.classpath" />
</javac>
</target>
如果还有其他错过,请确保: