我有以下目录结构:
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 看不到com.myapp.impl.core.FizzImpl
我有选择地添加到的main.compile.path
?提前致谢!