`
李宏喜
  • 浏览: 116381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ant 因为依赖关系导致无法编译通过,无法生成部署用的war包

阅读更多
今天公司的配置管理员,发邮件给leader,说无法生成新的war包
仔细查看了邮件的内容
[javac] F:\project\src\main
\project\com\info\trunk\web\controller\BaseJsonController.java:6: 软件包 com.
info.fgw.web.controller 不存在
    [javac] import com.info.fgw.web.controller.BaseJsonLoggerController;
    [javac]                                        ^
    [javac] F:\project\src\main
\project\com\info\trunk\web\controller\BaseJsonController.java:33: 找不到符号

    [javac] 符号: 类 BaseJsonLoggerController
   [javac] public abstract class BaseJsonController extends BaseJsonLoggerController
    [javac] F:\project\src\main\project\com\info\invest\dao\check\CheckDaoImpl.java:5: 软件包 com.info.fgw.util.rptrule 不存在

代码在IDE中是完全可以编译的。
用关键字 ant 编译 找不到符号 google,没有找到正确的解决方案
ant compile package not exists 再搜索, 使用ant -v 来查看编译的更详细输出。
在详细输出中,看到有这样的提示信息
 [javac] '-sourcepath'
 [javac] 'F:\project\src\main\project'
 [javac] '-encoding'
 [javac] 'UTF-8'
 [javac] '-g'

只包含了代码的一个分支,另一个分支src\main\fgw,在编译的时候,没有包含进来,所以就在BaseJsonController和CheckDaoImpl这里出现了找不到符号的编译错误,查看项目中ant的build文件中的编译输出的相关部分:
 <macro-compile srcdir="${main.src.dir.trunk}" destdir="${main.classes.dir}" classpathref="main.compile.classpath"/>
 <macro-compile srcdir="${main.src.dir.fgw}" destdir="${main.classes.dir}" classpathref="main.compile.classpath"/>

认为这里是错误的,在编译的时候,是顺序执行的,如果在分支fgw中增加了一些功能,而在分支trunk中引用新增的功能后,编译在检查依赖时出现了错误。修改为:
   <macro-compile srcdir="${main.src.dir.trunk};${main.src.dir.fgw}" destdir="${main.classes.dir}" classpathref="main.compile.classpath"/>

这样ant在编译时,加入了依赖关系的检查,编译通过,并生成了相应的部署包
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics