迁移Ant Gradle - Eclipse中的类路径和Buildpath问题

时间:2016-10-12 02:01:28

标签: java eclipse gradle ant classpath

现状: 我正在将构建系统从Ant迁移到Gradle。目前我遇到了类路径和构建路径的问题。这是当前的Ant编译目标定义:

    <target name="compile">
        <mkdir dir="${build.compile.target}/classes" />
        <javac srcdir="${src}" destdir="${build.compile.target}/classes">
            <classpath>
                <fileset dir="${build.war}/WEB-INF/lib">
                    <include name="**/*.jar" />
                </fileset>
                <pathelement location="${build.war}/WEB-INF/classes" />
            </classpath>
        </javac>
    </target>

开发人员通常执行以下setup-local目标来构建war文件等。

<target name="setup-local" depends="clean">
    <antcall target="copy_webapp" />
    <antcall target="compile" />

copy_webapp目标是将目录中的.jar和.class文件复制到$ {build.war}目录中。不幸的是,这个拷贝目标确实是需要的,因为它对文件进行了相关修改(它将文件从两个目录合并为一个,覆盖和文件修改。它是遗留代码,没有任何注释。我真的不想对它进行研究和找出原因是什么)

对我来说问题是: 在类路径中有一个文件引用,只有在事先执行copy_webapp目标时才存在。足够公平 - 如果我总是只执行setup-local目标,那么这是有效的。

现在迁移到Gradle并将项目导入Eclipse后,我的.java文件中出现了数千个错误,说无法解析导入。好吧,当然不是。在构建路径中是不存在的文件(f.e.“$ {build.war} / path / to / jar”)。

我不知道如何解决这些错误。我是否需要重构我的类路径,以便之前不依赖于copy_webapp目标?或者我可以以某种方式(使用Gradle)修改构建路径,它首先必须解析copy_webapp目标吗?

1 个答案:

答案 0 :(得分:0)

鉴于这些信息,您很难找到问题的根源。

一种选择是创建一个&#34; staging&#34;当您有一个Gradle任务生成Eclipse部署项目所需的复杂目录结构和/或中间输出时,Eclipse项目的目录。

我解决这个问题的方法是创建一个在调用gradle eclipse时运行的子任务。在任务配置中添加行it.dependsOn eclipse。此任务的输出将进入build/eclipse/TaskNamebuild/目录中的某个描述性位置。然后应更新类路径引用以指向build/目录下的输出目录位置。

此外,您可能必须对eclipse任务正在使用的类路径条目进行后处理,以生成项目类路径,以便它们正确引用任务输出位置。