初学maven(4)-使用maven ant task实现非标准打包

maven很强大,但是总有些事情干起来不是得心应手,没有使用ant时那种想怎么干就怎么干的流畅感。尤其当要打包一个特殊(相对maven的标准架构而且)时,常有不知所措的感觉。当然这个应该和自己对maven的了解不够有关,毕竟,“初学maven”嘛。

但是maven在依赖管理方面实在是太强大了,太喜欢,退回原来的ant方式完全不可能,我想用过maven的人,一般是不会有回到原来在cvs,subversion中checkin/checkout n个jar包的时代,仅此一项理由就足够继续坚持使用maven了。

然而ant的灵活又难于忘怀,尤其是从ant的build.xml一路走来的人,总是回不知不觉间想到ant的美好。鱼与熊掌,我都想要。最近想打包一个java应用,很简单但即不是标准的j2ee appication也不是web application, 用maven完全不知道该怎么打包,package出来的完全不是我想要的,在网上四处google maven资料的时候,总有用回ant拉倒的冲动。

先交代一下背景吧,我要打包的程序,是这个样子:

demo1
   |____lib
   |_____demo1.jar
   |_____*****.jar
   |_____*****.jar
   |____config
   |_____*****.properties
   |_____*****.xml
   |____log
   |_____*****.log
   |____run.bat
   |____run.sh

这个应用的打包模式很简单,一个bat或者sh脚本用来执行,lib目录下存放所有的jar包,包括自己的源代码编译打包的jar和第三方包。config下是配置文件,这些文件需要在安装时或者运行前修改,比如监听的端口啊,数据库信息之类的。log目录存放日志文件。最后打包的产物是一个zip包(或者tar,tar.gz)。

遇到的问题,就是maven标准的打包方式中根本不考虑类似的情况,什么jar,ear,war完全不适用。而且maven有些理念也诧异,比如maven标准的config目录是src/main/config,但是这个目录里面的配置文件默认会打包到jar包中,晕,都在jar里面了还让人怎么改啊?

本着尽量只用maven不用ant的想法,我在maven的资料中看了好久,没有找到解决的方法。晕,难道大家都只打包标准的ear,jar,war,只有我这样无聊的人才会有这种打包的需求?

几经寻觅和探索,最后发现,maven ant tasks似乎是一个不错的选择。带着mavenanttasks的官方文档和google上搜到的几篇文章,开始尝试,成功实现功能。现在将过程和方法share给大家。

首先建立java项目anttaskdemo1,按照maven的推荐,文件结构如下:

anttaskdemo1
   |____src/main/java
   |____src/main/config
   |____src/main/bin
   |____src/main/resources
   |____src/test/java
   |____src/test/resources
   |____target
   |____build.properties
   |____build.xml
   |____pom.xml

其中src/main/java下放java代码;src/main/resources下放一个*.properties文件,这个资源文件是打包到jar中,内容打包之后不需要改变的。src/main/config下放一个标准的log4j.xml,这个是有在安装运行前临时修改的需要的。src/main/bin下放置可执行文件。

时间: 2024-10-04 14:18:45

初学maven(4)-使用maven ant task实现非标准打包的相关文章

maven-Eclipse中Maven工程缺少Maven Dependencies

问题描述 Eclipse中Maven工程缺少Maven Dependencies 如图,缺少maven的jar包 导致全部报错 而且我发现这个应该是我频繁的从GIT上拉代码,然后删掉本地,再拉 之后出的这个错误,看了网上的解决方案都没用 解决方案 可以看看这里http://fanli7.net/a/bianchengyuyan/C__/20150225/538504.html 要修改下.classpath文件 解决方案二: Eclipse在引入Maven工程后,找不到Maven Dependen

4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念

 1 maven概念模型 2 maven的生命周期,项目构建过程 Maven生命周期就是为了对所有的构建过程进行抽象和统一 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤   Maven有"三套"相互独立的生命周期,而且相互独立,这三套生命周期分别是: Maven三大生命周期 clean:清理项目的 在进行真正的构建之前进行一些清理工作. default:构建项目的 构建的核心部分,编译,测试,打包,部署等等. site:生成项目站点的 生成项目报告,站点,发布站点

国内阿里maven仓库镜像maven配置文件maven仓库速度快

国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新更新:2016年11月11日 18:05:40 阿里云提供Maven私服,我把配置文件贴一下,自己放在maven的conf下就行,setting.xml https://github.com/ae6623/Zebra/blob/master/maven-repo-settings-ali.xml <?xml version="1.0" encoding="UTF-8&

微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件

原文:微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件 开篇介绍 大多数情况下我们的 SSIS 包都会配置在 SQL Agent Job 中周期性的按计划执行,比如每天晚上调用 SSIS 包刷新数据,处理 Cube 等.一旦 SSIS 包中出现任何异常,报错,那么配置在 SQL Agent Job 中的通知,邮件提醒就会把这些错误信息发邮件到指定的用户或者系统维护者,这样就起到了一个错误监控的作用. 但是在有的情况下,有一些

the exception &quot;Failure to transfer org.apache.maven:maven-parent&quot; about Maven

   今天使用Maven碰到了这个异常,异常信息如下: Html代码   Failure to transfer org.apache.maven:maven-parent:pom:17 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has ela

maven deploy 失败-maven 发布jar包到私服失败

问题描述 maven 发布jar包到私服失败 mvn clean deploy source:jar -Dmaven.test.skip=true,无法发布jar包到私服. 解决方案 Maven 发布jar包到远程仓库maven 发布jar包到远程仓库,Maven : 将Jar安装到本地仓库和Jar上传到私服

maven myeclipse-myeclipse建立maven项目总是报错!急急急!

问题描述 myeclipse建立maven项目总是报错!急急急! 已经配置好了maven加入到了环境变量中,用命令行 输入 mvn -v也显示安装成功在myeclipse 8.6 中也配置好了maven都是按网上一步步来的,可是总是出错

maven ssh 模块-maven ssh整合 模块开发 怎么配置applicationContext.xml

问题描述 maven ssh整合 模块开发 怎么配置applicationContext.xml 我们现在用maven 开发web项目 关于ssh框架整合时 因为是分多个模块开发 每个模块都会有一个applicationContext.xml 这么多的applicationContext.xml 中 有一个是主要的 其它的都是每个模块的具体配置 这个主要的配置文件该怎么配置 该放在哪

maven myeclipse-新建Maven项目报错,提示连接不上中央存储库

问题描述 新建Maven项目报错,提示连接不上中央存储库 CoreException: Could not calculate build plan: Plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins: