旧的Tomcat-Java-Ant项目恢复

问题描述

我需要一些建议,以了解如何做以及如何理解一个我从未见过的非常破烂的项目。 这是一个带有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个不同的程序包。不知道这是怎么工作的。 通过运行此命令,它将创建一个输出”目录,但没有jar,甚至没有.class文件。 通过运行Tomcat(当然),给出的例外是无法找到主类。我是新手,我很困惑。项目结构是我从未见过的。

project_structure

在内部实用程序中,出于某些原因,我们有Tomcat服务器和一些映像。 在src内部,我们有2个目录“ xxx_src”和“ yyy_src”,在Intellij中,它看起来像这样:

intellij view

每个以数字开头的目录都有一个包含逻辑的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 build-指定“运行build目标”。

您运行了哪个目标?

如果您仅键入ant,并且ant文件的第一行列出了默认选项(<project name="something" default="some-target" ....>),则将运行该默认选项。

此ant脚本非常不完整;有许多目标带有说明,但绝对没有任何作用,例如build-subprojects,因此这些事情显然不起作用。

我可以从粘贴的内容中推测出的项目的基本思想是:

  1. 该项目使用ecj-eclipse编译器。
  2. 而不是通过互联网(例如)获取ecj Apache Ivy(蚂蚁插件,可让您仅通过依赖项的名称和版本来指定依赖项,如果需要,它将负责从网络上下载依赖项),...通过从您的目录中找到它们来获取它们本地日食安装。
  3. 一旦这些依赖关系到位,就可能与lib dir中的任何其他依赖关系一起直接检查到源代码控制中(您粘贴得很少,我在这里求助于疯狂的猜测-请注意,已检查的二进制文件进入源代码管理是一个坏主意),可以对其进行编译。
  4. 编译相对简单;提取在代码段顶部列出的所有src目录的任何sub(subsubsub)dir中任何位置找到的所有Java文件,并将其全部编译,但是它们会转到WebContent/WEB-INF/classes目录(相对于{{ 1}}文件是)。您的代码段不包括创建该目录,因此除非该目录已经存在,否则它也将失败。也许也被错误地检查到源代码管理中。

因此,要逐步重新创建此构建:

  1. 下载您可以找到的最旧版本的Eclipse。
  2. 从那里获取org.eclipse.jdt.core _ *。jar文件。
  3. 复制过来。另外,仅解压缩显然位于其中的文件build.xml,使其位于该jdt.core jar文件旁边。
  4. 手动执行jdkCompilerAdapter.jar任务。只是..看看它,您一定可以阅读。
  5. 请注意,此项目还有一个替代的构建任务,其中使用eclipse编译器而不是javac编译器进行编译。这很奇怪-ecj编译器的主要好处是它是正确的开源文件(不太可能引起关注),速度更快(我怀疑这是原因),而且通常更正确(但这暗示着这些源代码太奇怪了) ,javac错误地未能编译它,这可能发生-在JDK1.5天内,<javac>会使javac崩溃,但这听起来不太可能,因此,它可能并不重要,但是如果您出现错误,这可能就是原因。