A. 怎么使用maven package命令
此命令包含一系列过程:validate-->compile-->test-->package;
Maven根据pom文件里packaging的配置,决定是生成jar文件还是war文件,并放到target目录下。
(注:此命令需要在项目的根目录(也就是pom.xml文件所在的目录)下运行,Maven才知道打包哪个项目。)
B. java Maven打包总结(Jenkins多模块编译部署)
原文地址: Java Maven打包总结(Jenkins多模块编译部署)
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
可以看到主要区别在把生成的jar包最终存放的位置, package只管打包; install把打好的包放到了本地maven仓库;deploy是同时放到本地仓库和远程maven私服
这里本地仓库默认是 /root/.m2/repository/ ,具体配置在 ${M2_HOME}/conf/settings 的 localRepository 配置项决定。远程私服仓库一般是nexus,具体地址在项目的pom.xml中配置。比如
一般是进入父级目录之后执行
如果是多级目录的话,有时候并不一定是按照 具体的项目来 编译,比如
这个时候如果一个项目一个项目来编译会超级多,很繁琐,这里是按照 subparentproject 来编译,命令如下
有个注意的地方:
subparentproject 目录下的pom.xml文件中一定有类型如下的配置
1、需要安装插件 Extended Choice Parameter Plug-In 可以支持参数单选、多选
2、项目选择"自由风格",而不是maven编译
3、在“构建” -> "执行shell" 中编写 子模块编译脚本及其后续处理
具体配置如下图
“构建” -> "执行shell" 中的处理脚本
附加:
Linux Bash下字符串操作总结
C. Maven 是怎样创建War 包
转载 最近在网上看到一篇介绍maven基础知识的文章,觉得对初学Maven的朋友一定有帮助。水平有限,翻译的不好,请大家见谅。
介绍
在处理WEB应用的时候,最终使用的工程文件是以War包的形式交付。Maven编译系统可以轻松的创建War包。接下来就让我们看看Maven是如何把一个源文件的工程转换成War包的。
Maven 版本 Apache Maven 3.0.4
工程实例
让我们来看看这个非常典型的Maven化的WEB工程
对应的POM.xml如下:
我们用此命令War包
1 mvn package
War生成在根目录下
1 /target/myprojectname.war
如下图,概况Maven生成War包过程
Maven 默认配置
我们都知道Maven可以很容易的把源文件工程创建为War包,但是POM文件中什么也没有设置。这是怎么回事啊?实际上Maven有自己默认的设置。这称之为 “convention over configuration”,Maven在配置中提供默认值。
第一,因为有一些Maven插件本身就与Maven 的生命周期绑定在一起。例如,在编译阶段使用
compiler:compile 作为默认命令。这就意味着当执行到编译阶段compiler plugin 被调用执行。如果选择生成WAR,那么 war:war 会与这个阶段绑定。
第二,当没有明确设置参数的时候,插件都会有自己默认值。例如 compiler:compile 目标有个参数是 compilerId。当默认值是 javac就意味着JDK 会被使用。当需要生成其他形式时可以重写此配置。
第三,一些设置包含在 Super POM,此文件是POM文件默认继承的。从Mavne3 起 Super POM 被放在
1 maven_dir/lib/maven-model-builder-3.0.3.jar:org/apache/maven/model/pom-4.0.0.xml
在这里我们可以发现很多默认的配置信息
Maven 生命周期
在我们的工程中,当执行 mvn package 命令,maven会执行它整个生命周期中的六个阶段
1 process-resources, compile, process-test-resources, test-compile, test and package
每个阶段会包含一个或多个目标。Maven 插件提供目标:一个插件可以有一个或多个目标。例如
Compiler 插件有两个目标:compiler:compile 和 compiler:testCompile
我们可以使用 mvn help:describe -Dcmd=phasename 命令列出如下内容
下面让我们看看每个目标
1.resources:resources
此目标用来将资源文件夹下的内容拷贝到输出目录
2.compiler:compile
此目标编译源项目工程
3.resources:testResources
此目标拷贝测试资源到测试输出目录
4.compiler:testCompile
此目标编译测试项目
5.surefire:test
此目标执行工程的单元测试,编译的测试类放在 /target/test-classes
6.war:war
此目录创建War包。它会把所有需要的文件放在
1 /target/myprojectname/
而后将他们打包生成 **.war。其中一个步骤是将 /src/main/webapp/ 拷贝到输出目录。
War插件另外一个重要步骤是拷贝Class文件到到 WEB-INF/classes目录和项目所依赖的jar包到 WEB-INF/lib目录。
默认情况下,插件还包含两个Maven描述文件:
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties 文件,META-INF/maven/${groupId}/${artifactId}/pom.properties
1 #Generated by Maven
2 #Sat May 12 00:50:42 CEST 2012
3 version=1.0-SNAPSHOT
4 groupId=mygroup.com
5 artifactId=myprojectname
最终的War包放在/target/目录下。
项目依赖
pom.xml文件会有一个默认的(JUnit)依赖。我们可以加另外一个常用的Jar log4j。
1
2 log4j
3 log4j
4 1.2.16
5
当没有设置依赖范围 ( scope),默认为 compile scope。这就意味着此依赖在编译、测试、运行阶段都可以得到。
只要是运行中会用到的jar包,都会拷贝到 /WEB-INF/lib目录
转载
D. 如何将maven 打包成war
如果你是maven web项目,直接用 mvn clean package命令就可以在target目录下生成war包。
E. Maven 是怎样创建War 包
工程实例
让我们来看看这个非常典型的Maven化的WEB工程
对应的POM.xml如下:
我们用此命令War包
1 mvn package
War生成在根目录下
1 /target/myprojectname.war
如下图,概况Maven生成War包过程
Maven 默认配置
我们都知道Maven可以很容易的把源文件工程创建为War包,但是POM文件中什么也没有设置。这是怎么回事啊?实际上Maven有自己默认的设置。这称之为 “convention over configuration”,Maven在配置中提供默认值。
第一,因为有一些Maven插件本身就与Maven 的生命周期绑定在一起。例如,在编译阶段使用
compiler:compile 作为默认命令。这就意味着当执行到编译阶段compiler plugin 被调用执行。如果选择生成WAR,那么 war:war 会与这个阶段绑定。
第二,当没有明确设置参数的时候,插件都会有自己默认值。例如 compiler:compile 目标有个参数是 compilerId。当默认值是 javac就意味着JDK 会被使用。当需要生成其他形式时可以重写此配置。
第三,一些设置包含在 Super POM,此文件是POM文件默认继承的。从Mavne3 起 Super POM 被放在
1 maven_dir/lib/maven-model-builder-3.0.3.jar:org/apache/maven/model/pom-4.0.0.xml
在这里我们可以发现很多默认的配置信息
Maven 生命周期
在我们的工程中,当执行 mvn package 命令,maven会执行它整个生命周期中的六个阶段
1 process-resources, compile, process-test-resources, test-compile, test and package
每个阶段会包含一个或多个目标。Maven 插件提供目标:一个插件可以有一个或多个目标。例如
Compiler 插件有两个目标:compiler:compile 和 compiler:testCompile
我们可以使用 mvn help:describe -Dcmd=phasename 命令列出如下内容
下面让我们看看每个目标
1.resources:resources
此目标用来将资源文件夹下的内容拷贝到输出目录
2.compiler:compile
此目标编译源项目工程
3.resources:testResources
此目标拷贝测试资源到测试输出目录
4.compiler:testCompile
此目标编译测试项目
5.surefire:test
此目标执行工程的单元测试,编译的测试类放在 /target/test-classes
6.war:war
此目录创建War包。它会把所有需要的文件放在
1 /target/myprojectname/
而后将他们打包生成 **.war。其中一个步骤是将 /src/main/webapp/ 拷贝到输出目录。
War插件另外一个重要步骤是拷贝Class文件到到 WEB-INF/classes目录和项目所依赖的jar包到 WEB-INF/lib目录。
默认情况下,插件还包含两个Maven描述文件:
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties 文件,META-INF/maven/${groupId}/${artifactId}/pom.properties
1 #Generated by Maven
2 #Sat May 12 00:50:42 CEST 2012
3 version=1.0-SNAPSHOT
4 groupId=mygroup.com
5 artifactId=myprojectname
最终的War包放在/target/目录下。
项目依赖
pom.xml文件会有一个默认的(JUnit)依赖。我们可以加另外一个常用的Jar log4j。
1
2 log4j
3 log4j
4 1.2.16
5
当没有设置依赖范围 ( scope),默认为 compile scope。这就意味着此依赖在编译、测试、运行阶段都可以得到。
只要是运行中会用到的jar包,都会拷贝到 /WEB-INF/lib目录
F. maven工程怎么打包成war
右键项目,选择Run
As,再选择Maven
build...,这时会弹出个新界面,在Goals里输入clean
package,然后点击Run就行了,打包好的项目放在target文件夹下面。
clean
package是maven的一个命令,意思是测试并打包,它还有很多命令,这里就不多说了。
G. Maven 打包war 的问题!急!!
这是Eclipes插件问题,报错李毕册了,哪宏eclipse-maven-plugins插数如件错误。
建议在dos里打包,直接到dos执行 maven clean install 即可生成jar。
H. maven如何打WAR包,看到target目录下面会生成JAR包,如何改成WAR
war插件有个标签<packagingExcludes>意思是打包时不包含哪些文件,写具体的文件或目录,多个用逗号隔开。
例子:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webappDirectory>WebContent</webappDirectory>
<!-- 必须指定,否则默认会变成在target/war/work 导致被打包进war文件,指定后为target/work -->
<workDirectory>${project.build.directory}/work</workDirectory>
<useCache>false</useCache>
<packagingExcludes>WEB-INF/classes/**/*.*,WEB-INF/lib/**/*</packagingExcludes>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
</configuration>
</plugin>
I. 如何用maven的eclipse插件打包
现在一般都使用Maven来管理工程,包括依赖的jar包,依赖的jar包,只需要在pom.xml的元素中添加项,每一个项都是一个依赖的jar包。
当开发完之后,需要打包成可执行的jar包,那么在eclipse中如何使用Maven打包呢,并且包含POM.xml中依赖的jar包?两个步骤:
在项目的POM.xml文件中添加maven-assembly-plugin插件,如下:
其中mainClass是你项目的入口main函数所在的类。
然后[右键]项目,选择[Run As]或[Debug As]的[Maven build …]后,在弹出的[Edit Configuration]的[Goals]填写assembly:assembly后,点击[Run],这样便会在项目下的[target]文件夹中生成两个jar文件,一个xxx.jar与xxx-jar-with-dependencies.jar, xxx便是你在创造Maven项目时的artifactId与version的拼接,即POM.xml文件中的与元素。这样xxx.jar便是不包含依赖的jar,xxx-jar-with-dependencies.jar便是包含依赖的jar包。
如果在终端或者shell文件中使用java命令运行,便需要运行xxx-jar-with-dependencies.jar,不然会报依赖的包不存在的错误。使用java -jar xxx-jar-with-dependencies.jar arg1, arg2 … 1>info.log 2 > err.log 运行jar包,1>info.jar表示将运行时jar包中的终端输出到info.log文件中,2>err.log表示将运行时的错误信息输出到err.log文件中。
可以参见:http://blog.csdn.net/symgdwyh/article/details/6081532
Eclipse插件Maven打包成war
在使用Maven创建java web项目时候,需要将项目打包成war包。直接[右键]项目,选择[Run As]或[Debug As]的[Maven install],这样便会在项目下的[target]文件夹中生成xxx.war文件,xxx是项目的名称。
如果该web需要在tomcat下运行,那么直接将war包拷贝到tomcat下的webapps文件夹中,这样tomcat启动时会自动解压到webapps下面,解压的文件夹名便是war的名字(不包含后缀),如果更改war文件后,重启tomcat需要先删除解压的文件夹,然后再重启tomcat,不然会是前面的代码。
如何将依赖的jar包拷贝到项目下
从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令:
1、mvn dependency:-dependencies或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入 dependency:-dependencies后,点击运行;
2、maven项目所依赖的jar包会导出到targed/dependency目录中。
二、导出到自定义目录中
在maven项目下创建lib文件夹,输入以下命令:
1、mvn dependency:-dependencies -DoutputDirectory=lib;
2、maven项目所依赖的jar包都会复制到项目目录下的lib目录下。
三、设置依赖级别
同时可以设置依赖级别,通常使用compile级别
mvn dependency:-dependencies -DoutputDirectory=lib -DincludeScope=compile
J. maven打包代码行git作者
1、首先需要在开始-运行-cmd,打开cmd命令窗口。
2、其次执行命令切换到工程所在目录,命令如下“cdD:GitHome“,”d:“。执行完成后,即会切换到“D:GitHome”悄咐仿目录启纤下。
3、使用命令打包,命令为“mvncleanpackage”,此时会将当前工程执行打包简磨操作,打包成功后会生成*.war形式的war包。
4、最后进行打包操作,时间长短会由工程大小来决定,执行完成后,cmd会回到显示之前切换的路径状态打包代码行git作者即完成。