前些日子因为要搞自动编译需要用到Ant执行相关操作。Ant以前经常用,常常用来编译、打包、部署,以及用它来生成javadoc。可现如今,没想到Ant反倒给我出了一个不大不小的难题——编译失败且无任何提示!
大概4年以前,当时Eclipse还没有现在这么强大,对于打jar、war还不方便,我们经常使用Ant辅助Eclipse来完成这些操作,不曾记得有这些个古怪的问题。
先看build.xml
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
encoding="UTF-8"
source="1.6"
target="1.6"
debug="true"
>
<classpath refid="build.classpath" />
</javac>
这里没有列出详细的build.xml,仅分析上述代码,只要路径正确,依赖包存在,编译应当正常通过。倘若路径、依赖包出现问题,至少能在控制台中获得相应提示。但是,问题还是出现了,执行上述任务,在控制台得不到任何提示,无法确认编译是否成功!
控制台输出结果:
引用
Buildfile: D:\work\workspace\xyz\build\build.xml
clean:
[echo] Clean
[delete] Deleting directory D:\work\workspace\xyz\build\classes
init:
[echo] Init
[mkdir] Created dir: D:\work\workspace\xyz\build\classes
compile:
[echo] Compile
[javac] Compiling 120 source files to D:\work\workspace\xyz\build\classes
控制台输出到此,什么提示也没有了,很诡异!
同样的build.xml在别的项目中就没有任何问题。
仔细检查classes目录,文件正常编译。
经过代码检查,发现非规范代码应用,如:
Date d = new Date("2009-01-01");
在JDK 1.1中,该构造函数被废弃,即加入了“@Deprecated”标识。
同理,代码中调用了废弃的方法,或某个类加上了废弃“@Deprecated”标识,都会有这个问题。不曾想到Ant居然对这些废弃标识有如此要求!
设想加入“-Xlint:unchecked -Xlint:deprecation”编译参数。
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
encoding="UTF-8"
source="1.6"
target="1.6"
debug="true"
deprecation="false"
optimize="false"
failonerror="true"
>
<classpath refid="build.classpath" />
<compilerarg value="-Xlint:unchecked -Xlint:deprecation" />
</javac>
未果!看来只能对现有代码一一清理了!
去除所有非规范依赖应用,将废弃类代码清理,继续编译,未果!
发现代码中部分有非规范泛型应用,如下所示:
Enumeration headerNames = request.getHeaderNames();
这里没有强制使用泛型转换,导致编译失败,可加入“@SuppressWarnings("unchecked")”标识。
对代码一一排查,针对所有“黄标签”代码进行修正。
重新编译,通过!
引用
Buildfile: D:\work\workspace\xyz\build\build.xml
clean:
[echo] Clean
[delete] Deleting directory D:\work\workspace\xyz\build\classes
init:
[echo] Init
[mkdir] Created dir: D:\work\workspace\xyz\build\classes
compile:
[echo] Compile
[javac] Compiling 120 source files to D:\work\workspace\xyz\build\classes
BUILD SUCCESSFUL
Total time: 7 seconds
以前使用Ant都是针对新系统,代码要求极为严格,尤其是对于“黄标签类”有着很严格的要求,在提交代码时就有可能被清理掉。但此次主要是对遗留系统做相关调整,难免遇到这些奇怪的问题。
这也告诫大家,在书写代码时尽量按照相关规范书写:避免使用废弃的方法、类,避免声明无用变量。在使用聚合类时,注意使用泛型。如果泛型不明确,可强制使用“@SuppressWarnings("unchecked")”标识。
如果大家遇到此类问题可以参考上述方法对症下药,最关键之处还是在于代码的规范编写!
分享到:
相关推荐
这个名为"网络爬虫的小程序 包括ant编译"的项目,显然旨在帮助开发者学习和理解如何构建一个简单的网络爬虫,并结合Java Swing来创建用户界面,同时利用Ant构建工具进行项目的管理和编译。 首先,我们来看看Java在...
Bootstrap则是一个流行的前端开发框架,用于创建响应式和移动优先的网页。 描述中提到的"ant, bootstrap, jar.zip包下载, 依赖包"表明这个压缩文件可能包含了一个用于启动Ant的jar文件(ant-bootstrap.jar),可能...
在`tomcatsource`目录中,通常会包含一个名为`build.xml`的Ant构建文件,它定义了编译、测试和打包的步骤。 2. **环境准备**:编译Tomcat 6.0源码前,需要安装Java Development Kit (JDK) 和Apache Ant。确保环境...
【描述】"jmeter3.1的包和ant1.9.5的包,自己用的,不晓得解压会不会有问题" 提示我们关注的是这两个软件包的下载、安装以及可能出现的问题。在解压过程中,确保你有一个支持ZIP格式的解压工具,如7-Zip或WinRAR。...
在Ant中,`build-for-server.xml`通常是一个构建脚本,它定义了一系列任务,如编译源代码、创建JAR或WAR文件、复制必要的资源到特定目录,以及执行自动化测试等。这个脚本是XML格式的,遵循Ant的规则,通过指定目标...
Ant可以用来编译源码、打包Web应用(WAR文件),然后使用Ant的deploy任务将WAR文件部署到Tomcat服务器上。这样,整个构建和部署流程可以通过自动化脚本完成,极大地提高了开发效率。 总结来说,Ant和Tomcat是Java ...
- **构建**:使用Ant编译源代码,生成可部署的类文件和资源。 - **打包**:将编译后的结果打包成WAR或JAR文件。 - **上传**:将打包好的文件传输到目标服务器。 - **解压和复制**:在目标服务器上解压并复制到...
在这个项目中,Ant被用作自动化构建工具,它可以帮助开发者编译源代码、打包应用、执行测试等。Ant基于XML配置,允许开发者定义任务和目标,使得构建过程可定制且易于维护。以下是关于Ant和Spring MVC框架的一些关键...
在性能测试中,Ant可以用来自动化JMeter脚本的编译、执行和结果分析,简化测试流程。 **Jenkins** 是一个持续集成工具,用于自动化各种任务,包括构建、测试和部署软件。通过配置Jenkins作业,可以定期触发性能测试...
- **构建工具**:Ant使用XML来描述构建过程,包括编译、打包、测试等任务,易于理解和维护。 - **与JMeter的集成**:通过`ant-jmeter`库,Ant可以调用JMeter命令行工具执行测试计划,并收集结果。 3. **json-lib-...
例如,一个简单的Ant构建文件可能包括编译、创建WAR文件等任务。 6. **运行Web应用**: - 如果你有Tomcat、Jetty等Web服务器,你可以将编译后的Web应用部署到其中。将整个项目目录复制到服务器的`webapps`目录下,...
深入理解并编译Tomcat源码,对于Java开发者来说,不仅能够提升对Web容器工作原理的认识,还能帮助优化性能,解决复杂的技术问题。 首先,我们来了解一下Tomcat源码编译的基础步骤: 1. **获取源码**:Tomcat的源码...
Ant可以自动编译、测试和部署软件,Jenkins可以自动执行Ant构建脚本。 知识点9:平台搭建 平台搭建是指将Jmeter、Ant和Jenkins集成在一起,实现自动化的接口测试平台。平台搭建需要配置Jmeter、Ant和Jenkins的环境...
Apache Ant,则是一个Java项目构建系统,它是早期Java开发中的重要工具,用于自动化编译、打包、测试等任务。Ant使用XML来描述构建过程,使得构建脚本易于理解和维护。Ant与Node.js的结合,通过"node-ant"这样的...
Ant是Apache软件基金会开发的一款Java构建工具,它通过XML配置文件来定义任务,进行项目的编译、打包和部署等自动化工作。在这个例子中,Ant将用于构建和管理Struts2应用的生命周期。 1. **基本环境搭建**:Basic_...
Ant Design,又称antd,是阿里团队开发的一个流行的React UI组件库,它提供了丰富的界面元素,如按钮、表格、布局、导航等,用于快速构建美观且响应式的Web应用。在本项目中,特别提到了“面包屑”(Breadcrumb),...
2. **Ant自动化构建**:Apache Ant是一种基于XML的构建工具,常用于Java项目的编译、打包和部署。在接口测试场景中,Ant可以用来自动化执行JMeter测试计划,并生成测试报告。通过在`build.xml`文件中定义目标和任务...
4. **Ant Design**:Ant Design是一个企业级的React UI设计语言和框架,提供了丰富的组件库,如表格、按钮、表单等,帮助开发者快速构建美观且响应式的用户界面。Ant Design遵循蚂蚁金服的设计规范,确保了良好的...