- 浏览: 1010822 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
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拉倒的冲动。
先交代一下背景吧,我要打包的程序,是这个样子:
1
2
3
4
5
6
7
8
9
10
11
12
|
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的推荐,文件结构如下:
1
2
3
4
5
6
7
8
9
10
11
|
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下放置可执行文件。
1. 首先看pom.xml,标准内容,很简单,象征性的加入几个依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>
1.3
</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>
1.2
.
13
</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>
5.8
</version>
<scope>test</scope>
<classifier>jdk15</classifier>
</dependency>
|
其中commons-codec,log4j是需要打包到lib中的,运行时需要。testng(或者更一般的junit)是用来单元测试的,不需要打包到lib中。请注意它的设置"<scope>test</scope>"。
2. 然后看看build.properties文件,这个内容不多:
M2_REPO=G:/soft/maven/localRepository
1
2
3
4
5
6
|
path.
package
=
package
path.target.name=anttaskdemo1
path.
package
.lib=lib
path.
package
.log=log
path.
package
.config=config
path.
package
.bin=
|
M2_REPO稍后再详谈,后面的path.package之类的是最终打包时使用的几个目录名称,对应于最终打包的结构。
3. build.xml,这个内容比较多。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<?xmlversion=
"1.0"
encoding=
"UTF-8"
?>
<projectname=
"demo"
default
=
"all"
xmlns:artifact=
"urn:maven-artifact-ant"
>
<description>
</description>
<propertyfile=
"build.properties"
/>
<targetname=
"init_maven"
>
<!--
remembertosetM2_REPObeforeusethisbuild.xml,forexampleineclispe:
"Window→Preferences→Ant→Runtime"
,addanewpropertynamed
"M2_REPO"
andsetitvaluepointtothepathofyourmaven
localrepository;Oryoucansetitinbuild.properties. Youneeddoone(andonlyone)ofthem.
-->
<pathid=
"maven-ant-tasks.classpath"
path=
"${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"
/>
<typedefresource=
"org/apache/maven/artifact/ant/antlib.xml"
uri=
"urn:maven-artifact-ant"
classpathref=
"maven-ant-tasks.classpath"
/>
<artifact:pomid=
"maven.project"
file=
"pom.xml"
/>
<artifact:dependenciespathId=
"classpath.build"
filesetid=
"maven.fileset.build"
>
<pomrefid=
"maven.project"
/>
</artifact:dependencies>
<artifact:dependenciespathId=
"classpath.runtime"
filesetid=
"maven.fileset.runtime"
useScope=
"runtime"
>
<pomrefid=
"maven.project"
/>
</artifact:dependencies>
</target>
<targetname=
"all"
depends=
"init_path,compile,jar,package,zip"
description=
"doall"
>
<echo>begintodoalltargettobuildtheresultpackage.</echo>
</target>
<targetname=
"maven_info"
depends=
"init_maven"
>
<echo>Mavenbuilddirectoryis${maven.project.build.directory}</echo>
<echo>MavenbuildfinalNameis${maven.project.build.finalName}</echo>
<echo>MavenbuildsourceDirectorydirectoryis${maven.project.build.sourceDirectory}</echo>
<echo>MavenbuildoutputDirectorydirectoryis${maven.project.build.outputDirectory}</echo>
<echo>MavenbuildscriptSourceDirectorydirectoryis${maven.project.build.testSourceDirectory}</echo>
<echo>MavenbuildtestOutputDirectorydirectoryis${maven.project.build.testOutputDirectory}</echo>
<echo>MavenbuildscriptSourceDirectorydirectoryis${maven.project.build.scriptSourceDirectory}</echo>
<echo>MavenbuildresourceDirectorydirectoryis${maven.project.build.resources}</echo>
<propertyname=
"target.jar.name"
value=
"${maven.project.build.directory}/${maven.project.build.finalName}.jar"
/>
<echo>MavenbuildscriptSourceDirectorydirectoryis${target.jar.name}</echo>
</target>
<targetname=
"clean"
depends=
"init_maven"
>
<echo>cleanbuilddirectory:${maven.project.build.directory}</echo>
<deletedir=
"${maven.project.build.directory}"
includes=
"**/*"
/>
</target>
<targetname=
"init_path"
depends=
"maven_info,clean"
>
<echo>makedirforjavacompile:${maven.project.build.outputDirectory}</echo>
<mkdirdir=
"${maven.project.build.outputDirectory}"
/>
</target>
<targetname=
"compile"
description=
"description"
depends=
"init_maven"
>
<javacsrcdir=
"${maven.project.build.sourceDirectory}"
destdir=
"${maven.project.build.outputDirectory}"
classpathref=
"classpath.build"
/>
</target>
<targetname=
"copyResource"
depends=
"init_maven"
>
<copytodir=
"${maven.project.build.outputDirectory}"
>
<filesetdir=
"src/main/resources"
>
</fileset>
</copy>
</target>
<targetname=
"jar"
depends=
"compile,copyResource"
>
<deletefile=
"${maven.project.build.directory}/${maven.project.build.finalName}.jar"
failonerror=
"false"
/>
<jardestfile=
"${maven.project.build.directory}/${maven.project.build.finalName}.jar"
basedir=
"${maven.project.build.outputDirectory}"
>
</jar>
</target>
<targetname=
"package"
depends=
"package_prepare,copyLib,copyConfig,copyBin"
>
</target>
<targetname=
"package_prepare"
depends=
"init_maven"
>
<echo>cleanpackagedirectory:${maven.project.build.directory}/${path.
package
}</echo>
<deletedir=
"${maven.project.build.directory}/${path.package}"
/>
<mkdirdir=
"${maven.project.build.directory}/${path.package}"
/>
<mkdirdir=
"${maven.project.build.directory}/${path.package}/${path.target.name}"
/>
<mkdirdir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}"
/>
<mkdirdir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.config}"
/>
<mkdirdir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.log}"
/>
</target>
<targetname=
"copyLib"
depends=
"init_maven"
>
<copytodir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}"
>
<filesetrefid=
"maven.fileset.runtime"
/>
<mappertype=
"flatten"
/>
</copy>
<copytodir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.lib}"
file=
"${maven.project.build.directory}/${maven.project.build.finalName}.jar"
>
</copy>
</target>
<targetname=
"copyConfig"
depends=
"init_maven"
>
<copytodir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.config}"
>
<filesetdir=
"src/main/config"
>
</fileset>
</copy>
</target>
<targetname=
"copyBin"
depends=
"init_maven"
>
<copytodir=
"${maven.project.build.directory}/${path.package}/${path.target.name}/${path.package.bin}"
>
<filesetdir=
"src/main/bin"
>
</fileset>
</copy>
</target>
<targetname=
"zip"
depends=
"init_maven"
>
<zipdestfile=
"${maven.project.build.directory}/${path.package}/${path.target.name}.zip"
>
<filesetdir=
"${maven.project.build.directory}/${path.package}/${path.target.name}"
></fileset>
</zip>
</target>
</project>
|
3.1 最重要的一步,init_maven
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<targetname=
"init_maven"
>
<!--
remembertosetM2_REPObeforeusethisbuild.xml,forexampleineclispe:
"Window→Preferences→Ant→Runtime"
,addanewpropertynamed
"M2_REPO"
andsetitvaluepointtothepathofyourmaven
localrepository;Oryoucansetitinbuild.properties. Youneeddoone(andonlyone)ofthem.
-->
<pathid=
"maven-ant-tasks.classpath"
path=
"${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"
/>
<typedefresource=
"org/apache/maven/artifact/ant/antlib.xml"
uri=
"urn:maven-artifact-ant"
classpathref=
"maven-ant-tasks.classpath"
/>
<artifact:pomid=
"maven.project"
file=
"pom.xml"
/>
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
标准目录布局可以参考这个官方资料: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 3.2 compile 这里是maven ant task的精髓所在,
结合之前maven初始化时的情况:
可以看到,我们的项目完全遵循maven的标准做法,然后ant通过访问pom来得到相关的路径信息和classpath信息,完美结合。 target copyResource 完成了将resource copy到outputDirectory的任务,这里的resource都是classpath resource。 注: 这个有个问题,就是我没有找到通过pom得到resouce目录的方法,${maven.project.build.resources 只能得到pom文件中<resources/>, 对于里面包含的<resource>不知道该用什么方式来访问,如默认的:
我试过 用${maven.project.build.resources[0];${maven.project.build.resources(0), ${maven.project.build.resources.0,${maven.project.build.resources.resource 等都无效。找了很久都没有找到资料,只好作罢。直接写死src/main/resources吧。 3.3 jar 和compile类似,标准的ant jar,然后通过访问pom来得到相关的路径信息和打包文件名。注意这里的文件名和路径和maven的做法一致,也就是说和执行maven的compile命令结果是一样的。
3.4 package, zip package_prepare, copyLib, copyConfig, copyBin 这几个target都简单,体力活而已。zip也是。 4. 总结 上面的内容虽多,但是总结起来就只有两点: 1. maven ant task可以将maven的功能和ant的灵活性统一起来,对于非标准的打包情况非常适用 2. maven ant task的使用并不难,不过需要掌握不少maven的基本知识,比如pom,标准目录布局等。 另外,似乎,ant + Ivy会是更好的选择? 相关文章: 初学maven(2)-maven/artifactory/m2eclipse安装全过程 初学maven(3)-使用nexus替代artifactory作为maven私服 <artifact:dependenciespathId=
"classpath.build"
filesetid=
"maven.fileset.build"
>
<pomrefid=
"maven.project"
/>
</artifact:dependencies>
<art
ifact:dependenciespathId=
"classpath.runtime"
filesetid=
"maven.fileset.runtime"
useScope=
"runtime"
>
<pomrefid=
"maven.project"
/>
</artifact:dependencies>
</target>
|
在ant中使用maven-ant-tasks,就需要装载maven-ant-tasks的jar包,方法有两种,一种是直接将maven-ant- tasks-2.0.9.jar放到ant的lib下,自然就可以直接使用。但是个人感觉不怎么喜欢这种方式,我采用的是第二种,在ant的 build.xml文件中装载:
1
2
|
<pathid=
"maven-ant-tasks.classpath"
path=
"${M2_REPO}/org/apache/maven/maven-ant-tasks/2.0.9/maven-ant-tasks-2.0.9.jar"
/>
<typedefresource=
"org/apache/maven/artifact/ant/antlib.xml"
uri=
"urn:maven-artifact-ant"
classpathref=
"maven-ant-tasks.classpath"
/>
|
这样就可以在后面使用maven-ant-tasks的task,比如 artifact:pom,artifact:dependencies。<path />用于指定maven-ant-tasks-2.0.9.jar的路径,这里就有点麻烦了:maven-ant-tasks-2.0.9.jar 这个东西放哪里好呢?直接放到项目中,然后存放到cvs/svn?显然不是一个好办法。考虑到maven本来就是干保存jar这行的,交给maven好 了。maven-ant-tasks-2.0.9.jar本来就是一个依赖,可以在http://mvnrepository.com/找到:
http://mvnrepository.com/artifact/org.apache.maven/maven-ant-tasks
pom内容如下:
1
2
3
4
5
|
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-ant-tasks</artifactId>
<version>
2.0
.
9
</version>
</dependency>
|
将这个内容随便找个空项目,加入后update一下dependency,在本地的maven repository中就会有它的jar文件。然后就可以直接使用它。
${M2_REPO},这个是eclipse中通用的指向maven local repository的变量,大家使用maven命令建立eclipse项目时会遇到它。我们在这里可以直接使用这个变量来访问maven local repository。如果没有建立这个变量,请自行建立,上面注释中有详细说明。如果在eclispe之外比如命令行直接运行ant打包,则可以通过设 置build.properties文件中的“M2_REPO=G:/soft/maven/localRepository”来指定。(这里用到ant 的一个特性,属性一旦被赋值就不能修改,因此第一次赋值有效,在eclispe中运行,M2_REPO会使用eclispe中设置的值,如果 eclispe没有设置或者命令行直接运行,M2_REPO属性会在build.properties文件装载时设置。)
装载ok后, 接着是调用artifact:pom和artifact:dependencies 任务来指定pom.xml文件,再得到dependencies信息,后面的编译打包会使用到。注意useScope="runtime",这个是为了最 后打包时使用,只复制runtie时需要的jar包。
<target name="maven_info" />是用来打印maven相关的一些信息的,比如maven下的几个build目录。artifact:pom任务装载了整个pom,因此在后面可 以访问到pom的信息,比如${maven.project.build.sourceDirectory}是java源代码目 录,${maven.project.build.finalName}是最终的名称。
pom的内容可以参考这两个官方资料:
1) maven model
http://maven.apache.org/ref/2.0.9/maven-model/maven.html
2) Introduction to the POM
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1047调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1067Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 18101、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 931“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 9141、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 989概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 883下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 914<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1646安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1152Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 1019///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 1055J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1259六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1574HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2113最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 964Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 964在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 130824小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 106613.9. 使用Spring的 ... -
WEB界面开发规范(转)
2011-11-02 20:06 936页面设计规则 页面命名规则 1、每个功能 ...
相关推荐
Maven Ant Tasks 是一个由 Maven 项目提供的库,它允许 Ant 构建脚本与 Maven 交互,实现 Ant 任务中的 Maven 功能,如编译、测试、打包等。在 Maven Ant Tasks 2.1.3 版本中,包含了主要的 jar 包 `maven-ant-tasks...
标题 "maven ant thrift0.9.0" 涉及到的是三个关键的软件开发工具:Thrift 0.9.0、Apache Ant 和 Apache Maven。这些工具在Java和其他编程语言的开发环境中广泛使用,特别是在构建和部署分布式系统时。 Thrift ...
以 myssh2 工程为例,我们可以使用 Maven-Ant-Task 将 Maven 依赖管理和 Ant 任务驱动结合起来,实现自动化构建。首先,我们需要下载 Maven-Ant-Task 的 jar 文件,并将其添加到 Ant 的 lib 目录下。然后,我们可以...
本文将详细讲解如何使用Maven来打包一个Java项目,并创建JAR文件。 首先,Maven有三个主要生命周期阶段:`clean`、`default`(也称为`compile`)和`install`。每个阶段包含一系列的阶段(或者称为目标,如`compile`...
Storm 编程实践(安装 Maven-使用 Maven 编译运行代码-mvn 打包) 本文档介绍了 Storm 编程实践的实践报告,涵盖了安装 Maven、使用 Maven 编译运行代码和 mvn 打包等内容。报告中还包括了实验环境的配置、实验内容...
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
本文将详细介绍如何通过编写脚本实现Maven项目的版本号自动升级以及打包上传的过程。 首先,我们要理解Maven的版本管理。在Maven的`pom.xml`文件中,定义了项目的版本号,如`<version>1.0.0-SNAPSHOT</version>`。...
标题中的“springboot(web项目,非maven)”指的是一个基于Spring Boot框架构建的Web应用程序,但它不是使用Maven作为构建工具。Spring Boot简化了Java Web应用的开发过程,提供了快速构建可运行的应用程序的方式,而...
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 maven-ant-tasks.jar
ant学习指导文档 maven配置 maven常见问题问答 对于初学或想深入了解maven的童鞋以指导
标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...
当前案例中包含一整套的代码和word文档,非常适合新手代码简单易懂; 主要是通过maven打包配合springboot application.properties文件配置实现通过打包来完成加载不同环境的配置内容;
"Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...
通过以上步骤,你就可以在IDEA中使用Maven成功地进行混淆打包了。这个过程不仅可以保护代码,还可以减小jar文件的体积,提高运行效率。记住,混淆配置需要根据项目具体情况进行调整,确保所有重要代码都能正常运行。
"maven 过滤文件夹打包"这个主题涉及到的是如何利用Maven的资源过滤功能来实现针对不同运行环境的配置文件打包。下面将详细解释这一过程。 在开发环境中,我们通常会有多种配置文件,比如`application-dev....
《Maven2.Ant.Junit合集》是一个包含多种IT工具和框架的资源包,主要聚焦于Java开发中的构建管理和单元测试。这个合集提供了PDF和CHM两种格式的文档,便于不同用户根据个人喜好进行阅读。以下是这些工具及其重要知识...
在Maven中实现这个功能,我们需要借助maven-assembly-plugin或者maven-war-plugin,但更常见的是使用maven-resources-plugin和maven-compiler-plugin配合yuicompressor-maven-plugin。以下是一个详细的步骤说明: 1...
现在我们来详细讨论如何使用Maven来实现这个特定的需求。 首先,我们需要了解Maven的默认构建过程。默认情况下,Maven将编译后的Java类文件放置在`target/classes`目录下。对于Web应用,最终的WAR包会将这些类文件...
maven下通用的ant配置文件,只要0积分。只需修改11行末尾的target/自己的工程名即可。
Apache Ant 1.10.11-bin (1).zip包含了Ant的最新版本,它使用XML来描述构建过程,包括编译、打包、测试等任务。尽管Maven后来成为更流行的构建工具,但Ant在某些项目中仍然有其独特的优势,如高度自定义性和简单性。...