【发布时间】:2013-07-19 13:14:14
【问题描述】:
我的目录结构如下:
MyApp/
src/main/java/
com/
myapp/
api/
IFizz
FizzLoader
impl/
core/
FizzImpl
Cat
Dog
Tree
...many other objects
src/test/java
...
build/
lib/
...
我只想编译src/main/java/com/myapp/api 以及 com.myapp.impl.core.FizzImpl 下的所有内容,这样Cat、Dog、Tree 等就不会被编译(因此排除)。
在通过 Ant build (build.xml) 中,我配置了以下main.compile.path:
<path id="src.path">
<fileset dir="src/main/java/com/myapp/api">
<include name="**.*java"/>
</fileset>
</path>
<path id="lib.main.path">
<fileset dir="lib/main">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="main.compile.path">
<path refid="src.path" />
<path refid="lib.main.path" />
<fileset dir="src/main/java" includes="com/myapp/impl/core/**/*" />
</path>
然后是下面的main-compile目标:
<target name="main-compile">
<javac includeantruntime="false" srcdir="src/main/java/com/myapp/api"
destdir="gen/bin/main" debug="on">
<classpath refid="main.compile.path"/>
</javac>
</target>
当我运行 main-compile 时,我得到以下构建异常:
[javac] /home/myuser/eclipse/workspace/MyApp/src/main/java/com/myapp/api/FizzLoader.java:14: package com.myapp.impl.core does not exist
[javac] import com.myapp.impl.core.FizzImpl;
[javac] ...(omitting rest of trace but available upon request)
这里,FizzLoader 正在创建FizzImpl 的一个实例,所以我需要在编译路径上使用它。
为什么Ant 看不到我选择性添加到main.compile.path 的com.myapp.impl.core.FizzImpl?提前致谢!
【问题讨论】: