Migration Ant Gradle - Eclipse 中的类路径和构建路径问题
Migration Ant Gradle - Classpath and Buildpath issues in Eclipse
现状:
我正在将构建系统从 Ant 迁移到 Gradle。目前我遇到了 classpath 和 buildpath 的问题。这是当前的 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} 目录中。不幸的是,这个复制目标是真正需要的,因为它对文件进行了相关修改(它将文件从两个目录合并到一个目录中,进行覆盖和文件修改。它是没有任何评论的遗留代码。我真的不想对它进行研究并且找出事情为什么会这样)
我的问题:
在 class 路径中有一个对文件的引用,这些文件仅在预先执行 copy_webapp 目标时才存在。很公平 - 如果我总是只执行 setup-local 目标,这就有效。
现在迁移到 Gradle 并将项目导入 Eclipse 后,我的 .java 文件中出现数千个错误,提示无法解析导入。好吧,当然不是。构建路径中的文件 (f.e."${build.war}/path/to/jar") 不存在。
我不知道如何解决这些错误。我是否需要重组我的 class 路径以便之前不依赖于 copy_webapp 目标?或者我可以以某种方式(使用 Gradle)修改它首先必须解析 copy_webapp 目标的构建路径吗?
鉴于这些信息,很难找到问题的根源。
当您有一个 Gradle 任务生成复杂的目录结构时,一个选项是为 Eclipse 项目创建一个 "staging" 目录 and/or Eclipse 部署所需的中间输出项目。
我解决这个问题的方法是在调用 gradle eclipse
时创建一个 运行 的子任务。在任务配置中添加 it.dependsOn eclipse
行。此任务的输出将进入 build/eclipse/TaskName
或 build/
目录中的某个描述性位置。然后应更新类路径引用以指向 build/
目录下的输出目录位置。
此外,您可能必须 post 处理 eclipse
任务用于生成项目类路径的类路径条目,以便它们正确引用任务输出位置。
现状: 我正在将构建系统从 Ant 迁移到 Gradle。目前我遇到了 classpath 和 buildpath 的问题。这是当前的 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} 目录中。不幸的是,这个复制目标是真正需要的,因为它对文件进行了相关修改(它将文件从两个目录合并到一个目录中,进行覆盖和文件修改。它是没有任何评论的遗留代码。我真的不想对它进行研究并且找出事情为什么会这样)
我的问题: 在 class 路径中有一个对文件的引用,这些文件仅在预先执行 copy_webapp 目标时才存在。很公平 - 如果我总是只执行 setup-local 目标,这就有效。
现在迁移到 Gradle 并将项目导入 Eclipse 后,我的 .java 文件中出现数千个错误,提示无法解析导入。好吧,当然不是。构建路径中的文件 (f.e."${build.war}/path/to/jar") 不存在。
我不知道如何解决这些错误。我是否需要重组我的 class 路径以便之前不依赖于 copy_webapp 目标?或者我可以以某种方式(使用 Gradle)修改它首先必须解析 copy_webapp 目标的构建路径吗?
鉴于这些信息,很难找到问题的根源。
当您有一个 Gradle 任务生成复杂的目录结构时,一个选项是为 Eclipse 项目创建一个 "staging" 目录 and/or Eclipse 部署所需的中间输出项目。
我解决这个问题的方法是在调用 gradle eclipse
时创建一个 运行 的子任务。在任务配置中添加 it.dependsOn eclipse
行。此任务的输出将进入 build/eclipse/TaskName
或 build/
目录中的某个描述性位置。然后应更新类路径引用以指向 build/
目录下的输出目录位置。
此外,您可能必须 post 处理 eclipse
任务用于生成项目类路径的类路径条目,以便它们正确引用任务输出位置。