maven,maven的pom.xml配置里配置了插件,是怎么使用的

maven,pom.xml里配置了插件,是怎么使用的_百度知道
maven,pom.xml里配置了插件,是怎么使用的
我有更好的答案
根据描述: pom.xml没声明加入plugin按照1.3进行编译肯定想用低JDK版本
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
http://mysun.iteye.com/blog/1435084
单独部署一个文件到repo
有时候我们会需要单独部署一个文件到maven的本地库或者远程库中,一般来说会是一个比较高层的pom文件,可以使用如下命令:
mvn install:install-file -Dfile=[your file] -DgroupId=[xxxx] -DartifactId=[xxxx] -Dversion=[xxxx] -Dpackaging=[pom|jar|other]
mvn deploy:deploy-file -Dfile=[your file] -DgroupId=[xxxx] -DartifactId=[xxxx] -Dversion=[xxxx] -Dpackaging=[pom|jar|other] -DrepositoryId=[id] -Durl=[repo url]
对于install命令来说,只有file参数是必选的,但是如果在本地库里面没有groupId、artifactId和version对应的目录,那么maven会要求传入这些参数,packaging则根据需要上传的文件类型指定。 对于deploy命令来说,file、repositoryId和url是必选的。其中repositoryId是指远程maven库的id,一般会配置在setting.xml文件里面,是在&server&标签下的那个id。url比较重要,如果错误的话,是无法上传的,一般来说我们可以在setting.xml文件的&server&标签下找到,但是这个&server&下的这个url不一定就是真正的maven库地址,如果这个url不行,那么可以尝试把这个url中的最后一个路径替换成&server&标签下&id&自标签的内容,一般来说是可以行的。如果再不行,就要文人了。其他的几个参数与install是一样的。
查看项目的间接依赖
maven的dependency:tree插件只能打印项目的直接依赖,如果想要查看项目的间接依赖,那就需要使用project-info-reports插件,命令如下:
mvn project-info-reports:dependencies -X
一定要加上-X选项,否则在控制台上是不会打出来依赖的,只能在生成的报告里面看到依赖。 这个插件需要使用2.1以上版本的maven才能运行。
浏览 16205
浏览: 249997 次
来自: 长沙
一个比较明显的问题:pwd:Print working dir ...
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
设置好之后打开页面出现undefined字样。需要刷新页面才能 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Java的项目构建工具Maven的配置和使用教程
转载 & & 作者:pastqing
Maven是Java世界中的项目管理和构建自动化工具,基于POM项目对象模型的思想,下面我们就具体来看一下具体的Java的项目构建工具Maven的配置和使用教程:
一、Maven是什么
Maven是一个用java开发的项目构建工具, 它能使项目构建过程中的编译、测试、发布、文档自动化, 大大减轻了程序员部署负担。
二、安装Maven
安装maven非常简单,访问Maven官方页下载即可:http://maven.apache.org/download.cgi
下载完后配置M2_HOME环境变量, 然后终端运行mvn --version, 看到正确的输出提示,Maven就安装完成了。
三、Maven基本概念
Maven的核心思想是POM, 即Project Object Model(项目对象模型)。POM文件是以XML文件的形式描述一个Maven项目所用到的资源(源码、依赖、测试等)。下图描述了POM文件的结构, 以及Maven是如何调用POM文件的。
当执行一条Maven命令时, 会传入一个pom文件, Maven会在该pom里面的描述的资源上执行
&project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&!-- The Basics --&
&groupId&...&/groupId&
&artifactId&...&/artifactId&
&version&...&/version&
&packaging&...&/packaging&
&dependencies&...&/dependencies&
&parent&...&/parent&
&dependencyManagement&...&/dependencyManagement&
&modules&...&/modules&
&properties&...&/properties&
&!-- Build Settings --&
&build&...&/build&
&reporting&...&/reporting&
&!-- More Project Information --&
&name&...&/name&
&description&...&/description&
&url&...&/url&
&inceptionYear&...&/inceptionYear&
&licenses&...&/licenses&
&organization&...&/organization&
&developers&...&/developers&
&contributors&...&/contributors&
&!-- Environment Settings --&
&issueManagement&...&/issueManagement&
&ciManagement&...&/ciManagement&
&mailingLists&...&/mailingLists&
&scm&...&/scm&
&prerequisites&...&/prerequisites&
&repositories&...&/repositories&
&pluginRepositories&...&/pluginRepositories&
&distributionManagement&...&/distributionManagement&
&profiles&...&/profiles&
&/project&
modelVersion是POM模型版本, 4.0.0支持Maven2和3
Maven Coordinates(Maven坐标)
(1)groupId: 它是一个组织或者项目的唯一ID, 大多数情况下会使用项目的java包的根名作为groupID, 例如com.pastqing
(2)artifactId:它是正在构建的项目名称, 例如一个支付系统artifactId是web-pay。artifactId 是Maven仓库中groupId目录下的子目录名
(3)version:顾名思义项目发行的版本号
以上三项都是构建结果名称的一部分, 在项目构建后会生成一个jar包,位于Maven仓库的路径就是MAVEN_REPO/com/pastqing/web-pay/1.0/web-pay-1.0.jar
四、一个用Maven构建的Hello World java项目
利用Maven插件archetype构建一个项目:
在终端中打开工作目录
运行命令:
mvn archetype:generate
, 第一次运行时比较慢,原因是第一次需要从Maven中央仓库中下载相关项目原型。下载完毕后,会选择项目模型,以及输入groupId, artifactId,version等,构建完毕后会有成功提示。
打包项目:切换到项目根目录,运行mvn package。打包成功之后,项目会生成一个target文件夹,里面有生成好的jar文件和class文件。
运行jar文件:
java -cp target/helloWorld-1.0-SNAPSHOT.jar com.pastqing.App
至此一个最简单Maven构建的java项目就完成了。
五、一个用Maven构建的java-web项目
生成一个web项目与生成java项目基本类似,只是用的模型不同而已。这里不再阐述。下面我们具体说说如何使用Tomcat或者jetty插件运行web项目。这里我们以tomcat举例。
Maven Tomcat插件安装:&&http://tomcat.apache.org/maven-plugin-2.2/&
我们将如下插件信息加入到web项目中的POM文件中
&groupId&org.apache.tomcat.maven&/groupId&
&artifactId&tomcat6-maven-plugin&/artifactId&
&version&2.2&/version&
&groupId&org.apache.tomcat.maven&/groupId&
&artifactId&tomcat7-maven-plugin&/artifactId&
&version&2.2&/version&
这样我们集成了这个tomcat的Maven插件, 只需要一个命令就可以部署、启动服务了。命令如下:
mvn tomcat:run
(tomcat6)
mvn tomcat7:run
(tomcat7)
使用tomcat Maven插件自动部署到外部tomcat
以上自动部署,会使用Maven内嵌的Tomcat, 下面我们修改POM文件, 让项目部署到外部的Tomcat中。
修改项目POM文件,添加服务器配置信息
&groupId&org.apache.tomcat.maven&/groupId&
&artifactId&tomcat7-maven-plugin&/artifactId&
&version&2.2&/version&
&configuration&
&url&http://localhost:8080/manager/text&/url&
&server&tomcat7&/server&
&username&admin&/username&
&password&admin&/password&
&/configuration&
其中server, username, password的值与%Maven_HOME中的setting.xml中的server, username, password一一对应。
启动外部tomcat, 运行命令mvn tomcat7:redeploy
六、如何用Maven构建多模块项目
所有的Maven pom文件都继承自一个父POM, 如果没有指定父pom, 则该pom文件继承自根POM。pom文件的集成关系如下图所示:
可以让一个pom文件显式地继承另一个pom文件。这样,可以通过修改公共父pom文件的设置来修改所有子pom文件的设置。这里我们使用parent标签来定义父pom。下面我们具体搭建一个多模块Mavne项目
2.构建项目目录结构
我们创建一个maven-web项目, 名字叫EducationCloud, 接下来我们在项目目录下创建几个文件夹用来划分我们的模块。它们分别是Education-parent(父模块), Education-core(业务), Education-entity(实体), Education-web(web服务)
目录的划分可以根据需要进行, 我的划分如上
3.修改pom文件
我们用module标签来进行划分模块。打开根目录下的pom文件, 添加moudle标签。
&?xml version="1.0" encoding="UTF-8"?&
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.EducationCloud&/groupId&
&artifactId&EducationCloud&/artifactId&
&version&1.0-SNAPSHOT&/version&
&packaging&pom&/packaging&
&module&Education-parent&/module&
&module&Education-core&/module&
&module&Education-entity&/module&
&module&Education-web&/module&
&/modules&
&name&EducationCloud&/name&
&/project&
这里我们说下packaging标签:最常见的就是打包为jar, war了。任何一个Maven项目都需要定义pom文件中的packaging元素, 如果不声明该元素, 则默认打包为jar, 如果定义值为war那么就打包为war包。如果值为pom,那么什么包都不生成(通常用于父模块)。
给各个模块添加parent标签:
parent标签用来定义父POM的坐标位置的, 定义如下:
&groupId&com.EducationCloud&/groupId&
&artifactId&EducationCloud-parent&/artifactId&
&version&1.0-SNAPSHOT&/version&
&relativePath&&/relativePath&
groupId, aritfactId, version是常规表示父pom位置信息的元素, relativePath是表示父pom位置的相对路径, 默认为../pom.xml, 这里需要注意的是groupId, aritfactId, version必须与父pom文件中的对应起来
使用dependencyManagement管理项目所有依赖
为了统一管理依赖,我们在父项目模块的pom文件中使用dependencyManagement来声明项目的所有依赖, 这样在其他的子项目中引用依赖时就可以省略版本号的编写, 修改起来也很容易。
编写**父项目模块**educationCloud-parent的pom文件, 添加如下:
使用pluginManagement管理项目中的Maven插件
为了统一管理项目中的Maven插件, 如Maven编译插件, 打包插件等及其配置信息, 在父项目 pom文件中添加pluginManagement来管理, 这样在所有子模块中引用的插件都会统一处理, 添加如下:
&pluginManagement&
&!-- complile插件的配置 --&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-complier-plugin&/artifactId&
&version&3.3&/version&
&configuration&
&source&1.7&/source&
&target&1.7&/target&
&encoding&UTF-8&/encoding&
&/configuration&
&/plugins&
&/pluginManagement&
上面我们添加了maven编译插件的配置,用jdk1.7编译, 保存后我们可以在各个子模块的Effective pom中看到相应的修改。
使用properties标签定义常量:
我们将各个依赖的版本号定义为不同的常量,这样方便以后的修改:
&properties&
&jdkVersion&1.7&/jdkVersion&
&servletVersion&3.1.0&/servletVersion&
&mysqlVersion&5.1.34&/mysqlVersion&
&junitVersion&4.12&/junitVersion&
&defaultEncoding&UTF-8&/defaultEncoding&
&/properties&
引用时用${jdkVersion}的形式引用即可。
注,以上操作均可在IDE中操作, 更加方便简单。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具maven 配置篇 之pom.xml(一) - 企业应用 - Java - ITeye论坛
maven 配置篇 之pom.xml(一)
锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
发表时间:&&
说完了settings.xml配置,下来说一下maven2的主要配置pom.xml
什么是pom?
pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
快速察看:
基本内容:
POM包括了所有的项目信息。
maven 相关:
pom定义了最小的maven2元素,允许groupId,artifactId,version。所有需要的元素
groupId:项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如org.codehaus.mojo生成的相对路径为:/org/codehaus/mojo
artifactId: 项目的通用名称
version:项目的版本
packaging: 打包的机制,如pom, jar, maven-plugin, ejb, war, ear, rar, par
classifier: 分类
主要为依赖,继承,合成
依赖关系:
groupId, artifactId, version:描述了依赖的项目唯一标志
可以通过以下方式进行安装:
使用以下的命令安装:
mvn install:install-file –Dfile=non-maven-proj.jar –DgroupId=some.group –DartifactId=non-maven-proj –Dversion=1
创建自己的库,并配置,使用deploy:deploy-file
设置此依赖范围为system,定义一个系统路径。不提倡。
type:相应的依赖产品包形式,如jar,war
scope:用于限制相应的依赖范围,包括以下的几种变量:
compile :默认范围,用于编译
provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
runtime:在执行时,需要使用
test:用于test任务时使用
system:需要外在提供相应得元素。通过systemPath来取得
systemPath: 仅用于范围为system。提供相应的路径
optional: 标注可选,当项目自身也是依赖时。用于连续依赖时使用
外在告诉maven你只包括指定的项目,不包括相关的依赖。此因素主要用于解决版本冲突问题
org.apache.maven
maven-embedder
org.apache.maven
maven-core
表示项目maven-embedder需要项目maven-core,但我们不想引用maven-core
另一个强大的变化,maven带来的是项目继承。主要的设置:
定义父项目
org.codehaus.mojo
packaging 类型,需要pom用于parent和合成多个项目。我们需要增加相应的值给父pom,用于子项目继承。主要的元素如下:
开发者和合作者
插件执行使用相应的匹配ids
子项目配置
org.codehaus.mojo
../my-parent
my-project
relativePath可以不需要,但是用于指明parent的目录,用于快速查询。
dependencyManagement:
用于父项目配置共同的依赖关系,主要配置依赖包相同因素,如版本,scope。
合成(或者多个模块)
一个项目有多个模块,也叫做多重模块,或者合成项目。
如下的定义:
org.codehaus.mojo
my-project1
my-project2
build 设置
主要用于编译设置,包括两个主要的元素,build和report
主要分为两部分,基本元素和扩展元素集合
注意:包括项目build和profile build
${basedir}/target
${artifactId}-${version}
filters/filter1.properties
defaultGoal: 定义默认的目标或者阶段。如install
directory: 编译输出的目录
finalName: 生成最后的文件的样式
filter: 定义过滤,用于替换相应的属性文件,使用maven定义的属性。设置所有placehold的值
资源(resources)
你项目中需要指定的资源。如spring配置文件,log4j.properties
META-INF/plexus
${basedir}/src/main/plexus
configuration.xml
**/*.properties
resources: resource的列表,用于包括所有的资源
targetPath: 指定目标路径,用于放置资源,用于build
filtering: 是否替换资源中的属性placehold
directory: 资源所在的位置
includes: 样式,包括那些资源
excludes: 排除的资源
testResources: 测试资源列表
在build时,执行的插件,比较有用的部分,如使用jdk 5.0编译等等
org.apache.maven.plugins
maven-jar-plugin
extensions: true or false,是否装载插件扩展。默认false
inherited: true or false,是否此插件配置将会应用于poms,那些继承于此的项目
configuration: 指定插件配置
dependencies: 插件需要依赖的包
executions: 用于配置execution目标,一个插件可以有多个目标。
maven-antrun-plugin
Build Dir: ${project.build.directory}
id:规定execution 的唯一标志
goals: 表示目标
phase: 表示阶段,目标将会在什么阶段执行
inherited: 和上面的元素一样,设置false maven将会拒绝执行继承给子插件
configuration: 表示此执行的配置属性
pluginManagement:插件管理以同样的方式包括插件元素,用于在特定的项目中配置。所有继承于此项目的子项目都能使用。主要定义插件的共同元素
扩展元素集合
主要包括以下的元素:
Directories
用于设置各种目录结构,如下:
${basedir}/src/main/java
${basedir}/src/main/scripts
${basedir}/src/test/java
${basedir}/target/classes
${basedir}/target/test-classes
Extensions
表示需要扩展的插件,必须包括进相应的build路径。
org.apache.maven.wagon
1.0-alpha-3
用于在site阶段输出报表。特定的maven 插件能输出相应的定制和配置报表。
${basedir}/target/site
maven-project-info-reports-plugin
Report Sets
用于配置不同的目标,应用于不同的报表
http://java.sun.com/j2se/1.5.0/docs/api/
有思想的芦苇
等级: 初级会员
来自: 大连
发表时间:&&
请问楼主如果Junit的测试代码需要调用一批配置文件,它们基本处于一个大目录中,是否需要用&testResources&来处理,能给出一个简单sample吗?
请登录后投票
发表时间:&&
默认放在test 下面的resources中就行了。如果需要自定义,更改 &testResources&&&&&& &testResource&&&&&&&& &directory&src/test/yourresources&/directory&&&&&& &/testResource&&&& &/testResources&
请登录后投票
等级: 初级会员
来自: 合肥
发表时间:&&
that's ok!
请登录后投票
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术}

我要回帖

更多关于 pom文件配置maven插件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信