[英]Old Tomcat - Java - Ant project recovery
我需要一些建议才能知道该怎么做以及如何理解一个我从未见过的非常糟糕的项目。 这是一个带有 servlet 和 jsp 的 Java 5 项目,看起来像是用 ant 构建的。
它被许多不同的人更新了很多次。 我试图启动 ant build.xml 脚本,这部分应该在其中构建它(其他人指的是库,我猜这并不重要)。
<target depends="clean" name="cleanall"/>
<target depends="build-subprojects,build-project" name="build"/>
<target name="build-subprojects"/>
<target depends="init" name="build-project">
<javac debug="true" debuglevel="${debuglevel}" destdir="WebContent/WEB-INF/classes" includeantruntime="false" source="${source}" target="${target}">
<src path="src/xxx_src"/>
<src path="src/yyy_src/00_hibernate"/>
<src path="src/yyy_src/00_jblooming"/>
<src path="src/yyy_src/00_jblooming_waf"/>
<src path="src/yyy_src/00_svn"/>
<src path="src/yyy_src/05_designer"/>
<src path="src/yyy_src/20_indexing"/>
<src path="src/yyy_src/40_website"/>
<src path="src/yyy_src/42_forum"/>
<src path="src/yyy_src/50_core"/>
<src path="src/yyy_src/52_flowork"/>
<src path="src/yyy_src/88_JES_mailserver"/>
<classpath refid="xxx.classpath"/>
</javac>
</target>
<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
<copy todir="${ant.library.dir}">
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</copy>
<unzip dest="${ant.library.dir}">
<patternset includes="jdtCompilerAdapter.jar"/>
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</unzip>
</target>
<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<antcall target="build"/>
</target>
我区分 XXX 和 YYY 因为它有点像 2 个不同的项目。 Intellij 检测到 2 个不同的包。 不知道这是如何工作的。 通过运行它,它会创建一个“out”目录,但没有 jar,甚至没有 .class 文件。 通过运行Tomcat(当然)给出的异常是无法找到主类。 我是新手,我很困惑。 项目结构是我以前从未见过的。
由于某些原因,在实用程序内部我们有 Tomcat 服务器和一些图像。 在 src 中,我们有 2 个目录“xxx_src”和“yyy_src”,在 Intellij 中,它看起来像这样:
每个以数字开头的目录都有一个包含逻辑的 org 或 com 目录。 在 50_core 中,我们有业务逻辑和模型,因此 Java 类按部分划分。 例如:
50_core/com/yyyproject/agenda/businessLogic/AgendaAction.java
50_core/com/yyyproject/agenda/businessLogic/AgendaController.java
50_core/com/yyyproject/task/Assignment.java
我需要让它运行,但我真的不知道如何进行或在哪里查看。 任何帮助我避免心脏病发作的建议都将不胜感激。
“通过运行这个”
Ant 由目标组成。 单个脚本包含许多目标,您必须指定一个,例如ant build
- 指定“运行build
目标”。
你跑了哪个目标?
如果您只输入ant
,并且您的 ant 文件的第一行列出了一个默认选项( <project name="something" default="some-target" ....>
),则运行该默认选项。
这个蚂蚁脚本很不完整; 有许多带有描述的目标,但它们绝对不做任何事情,例如build-subprojects
,所以这些东西显然不起作用。
我可以从您粘贴的内容中推测该项目的基本思想是:
lib
目录中的任何其他依赖项一起直接检查到源代码管理中(您粘贴的很少,我在这里进行了疯狂的猜测 - 请注意,将二进制文件检查到源代码管理中是一个坏主意),就可以编译了。WebContent/WEB-INF/classes
目录(相对于build.xml
文件是)。 您的代码段不包括创建该目录,因此除非该目录已经存在,否则这也会失败。 可能是,也许这也被错误地检查到源代码管理中。因此,要逐步重新创建此构建:
jdkCompilerAdapter.jar
,使其位于 jdt.core jar 文件旁边。<javac>
任务。 只是..看看它,你肯定能读懂。Integer x = 5; x++;
例如会导致 javac 崩溃,但这听起来也不太可能。因此,这可能并不重要,但是如果出现错误,这可能就是原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.