我今天开始学习ANT,以便简化Java编译。
我编写了简单的ANT脚本,它只使用javac
命令。
我正在尝试从 ..... \ head_first \ src \ com \ masatosan \ constant.java (来源)编译
到目标目录:
..... \ head_first \ WEB-INF \类\ COM \ masatosan \ CONF
所以结果如下:
..... \ head_first \ WEB-INF \类\ COM \ masatosan \ CONF \ constant.class
但是我无法弄清楚为什么实际结果将“/ com / masatosan / conf”目录添加到目标文件夹,所以它看起来像:
C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ webapps \ head_first \ WEB-INF \ classes \ com \ masatosan \ conf \ com \ masatosan \ constant.class
有谁能告诉我如何解决这个问题?
ANT
<project name="CompileMasatosan"
basedir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan">
<description>
masatosan compiler
</description>
<property name="confSrc"
location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\conf" />
<property name="confDest"
location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes\com\masatosan\conf" />
<target name="compileConfSrc">
<javac srcdir="${confSrc}" destdir="${confDest}" />
</target>
</project>
更新
我不知道编译器会根据包名创建目录。
constant.java的包名是com.masatosan.conf,因此编译器会创建“/ com / masatosan / conf /”
答案 0 :(得分:2)
因为包名称。你有一个com.masatosan包中的Java文件。您可以通过两种方式将类移动到默认包或将$ {confDest}值设置为\ head_first \ WEB-INF \ classes \。
答案 1 :(得分:2)
您试图告诉ANT更改包,因为您希望Constant.class位于com.masatosan.conf包下,而不是com.masatosan包。 Ant编译过程将创建相应的包子目录,这就是为什么你看到在dest下创建的com \ masatosan。
我认为你不能告诉ANT更改源文件的包,这是你试图通过注入一个额外的conf dir来做的。您可以创建一个conf目录并使用conf\com\masatosan\constants.class
或将其放在classes\com\masatosan\constants.class
下,但是您无法执行com\masatosan\conf\constants.class
,因为它会将constants.class的包更改为com.masatosan.conf
}
或者只需将constants.class的包更改为com \ masatosan \ conf并将您的ant文件更改为:
<property name="confDest"
location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes" />
答案 2 :(得分:1)
这是因为编译器正在您指定的目标目录下创建包目录结构。 constant
类位于com.masatosan
包中,因此在classes\com\masatosan\conf
下,编译器为包创建另外两个目录com\masatosan
,并放置已编译的类({{ 1}})在那里。
您的目标目录应该只是constant.class
。将为您创建C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes
和com
目录。