当前情况:我正在将构建系统从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>开发人员通常执行以下设置-本地目标来构建war文件,等等。
<target name="setup-local" depends="clean">
<antcall target="copy_webapp" />
<antcall target="compile" />
copy_webapp目标是将.jar和.class文件从目录复制到${build.war}目录中。不幸的是,这个复制目标是真正需要的,因为它对文件进行了相关的修改(它将两个目录中的文件合并为一个,进行覆盖和文件修改)。这是没有任何注释的遗留代码。我真的不想对它做研究,找出为什么事情是这样的)
问题:类路径中有一个对文件的引用,只有在预先执行copy_webapp目标时才存在。公平-这是可行的,如果我总是执行设置-本地目标。
现在,在迁移到Gradle并将项目导入到Eclipse之后,我在我的.java文件中得到了数以千计的错误,表示导入无法解决。嗯,当然不是。在构建路径中有文件(f.e。不存在的"${build.war}/path/to/jar")。
我不知道如何解决这些错误。我是否需要重构我的类路径,以便以前不依赖于copy_webapp目标?或者,我可以以某种方式(使用Gradle)修改构建路径,因为它之前必须解析copy_webapp目标?
发布于 2016-10-12 21:04:09
考虑到这些信息,很难找到问题的根源。
一种选择是,当您有一个生成复杂目录结构和/或Eclipse部署项目所需的中间输出的Gradle任务时,为Eclipse项目创建一个“暂存”目录。
解决这个问题的方法是创建一个在调用gradle eclipse时运行的子任务。在任务的配置中添加行it.dependsOn eclipse。此任务的输出将进入build/eclipse/TaskName或build/ dir中的某个描述性位置。然后,应该更新类路径引用,以指向build/ dir下的输出目录位置。
此外,您可能必须对eclipse任务用于生成项目类路径的类路径条目进行后处理,以便它们正确地引用任务输出位置。
https://stackoverflow.com/questions/39989391
复制相似问题