Marven的使用
Posted sundaysjava
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Marven的使用相关的知识,希望对你有一定的参考价值。
设置Maven
允许设置的参数
1.localRepository: 通过<localRepository../>元素设置,内容是一个路径字符串用于设置Maven的本地资源库路径。
2. interactiveMode: Maven是否处于交互模式
3.offline: Maven是否处于离线状态,当为false时,每当maven找不到插件,依赖库,尝试从网络下载
4.proxies: 设置Maven代理服务器 包括服务器的ID、协议、代理服务器地址、代理服务端口、用户名、密码
命令格式
1
mvn <plugin-prefix>:<goal> -D<属性名>=<属性值> …
plugin-prefix是一个有效的插件前缀,goal就是该插件所包含的指定目标,-D用于为目标指定属性,每次运行mvn命令可通过多个-D选项来指定属性名、属性值
2
mvn <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>:goal]
运行指定插件
Maven插件和功能用法
可登陆http://maven.apache.org/plugins/index.html查看
插件包含的目标
archetype:create:已过时
archetype:generate: 使用指定原型创建Maven项目
archetype:create-from-project: 使用已有的项目创建Maven项目
archetype:crawl:从仓库中搜索原型
创建java项目示例
Mvn archetype:generate -DinteractiveMode=false -DgroupId=org.fkjava -DartifactId=mavenQs -Dpackge=org.fkjava.mavenqs
编译项目 在pom所在文件执行
mvn compile
执行java类
mvn exec:java -Dexec.mainClass=”org.fkjava.mavenqs.App”
查看合成的pom.xml
mvn help:effective-pom
maven生成文件目录
源代码 ${basedir}/src/main/java路径下
资源文件 ${basedir}/src/main/resources路径下
测试 ${basedir}/src/test路径下
编译生成的class ${basedir}/target/classes路径下
项目生成的jar ${basedir}/target路径下
Maven的生命周期
在pom.xml所在文件
mvn install
常见执行插件及顺序
Maven-resources-plugin..resources (default-resources)
Maven-complier-palugin…compile (default-compile)
Maven-resources-plugin….testResources(default-testResources)
Maven-compile-plugin-testCompile (default-testCompile)
Maven-surefire-plugin…test(default test)
Maven-jar-plugin (default-jar)
Maven-intall-plugin (default-install)
执行Maven生命周期中的一个活多个阶段 【自动从第一个阶段开始执行到指定阶段】
mvn <phase1><phase2>….
Maven的三个基本生命周期
1clean 2default 3site
1. clean
pre-clean: 构建之前执行预先清理
clean 执行清理
post-clean:最后清理
默认生命周期生命核心
1 compile 编译项目
2 test 单元测试
3 package 项目打包
4 install 安装到本地仓库
5 deploy 部署到远程仓库
上面列出的只是 Maven默认生命周期的核心阶段,实际上, Maven默认的生命周期包含如下段
validate验证项目是否正确。
generale-sources:生成源代码
ocess-sources:处理源代码
generate-resources:生成项目所需的资源文件
process-rcsources:复制资源文件至目标目录
compile:编译项目的源代码。
process-classes:处理编译生成的文件
generale-test-sources:生成测试源代码
process-test-sources:处理测试源代码。
generate-test-resources:生成测试的资源文件
process-test-resourcest复制测试的资源文件至测试目标目录,
site生命周期用于生成项目报告站点、发布站点,该生命周期包含如下核心阶段,
pre-site:生成站点之前做验证
site:生成站点
post-sie:生成站点之后做验证,
site-deploy:发布站点到远程服务器
进入 mavenS项目中 pom.xm所在的路径,执行如下命令
第一次执行该命令时将会看到Mn不地下插件及相关文件,成功执行该命全将可以
mavenQs目录下多出一个aget目录,该目录下包含一个sie子目录,打开site子目录下index
修改pom执行 ant compile可以看到相关绑定到指定生命周期的阶段
下面为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>
<groupId>org.fkjava</groupId>
<artifactId>mavenQs</artifactId>
<version>1.0-SNAPSHOT</version>
<name>mavenQs</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<build>
<sourceDirectory>D:EclipseeclipseWorkSpacemavenQssrcmainjava</sourceDirectory>
<scriptSourceDirectory>D:EclipseeclipseWorkSpacemavenQssrcmainscripts</scriptSourceDirectory>
<testSourceDirectory>D:EclipseeclipseWorkSpacemavenQssrc estjava</testSourceDirectory>
<outputDirectory>D:EclipseeclipseWorkSpacemavenQs argetclasses</outputDirectory>
<testOutputDirectory>D:EclipseeclipseWorkSpacemavenQs arget est-classes</testOutputDirectory>
<resources>
<resource>
<directory>D:EclipseeclipseWorkSpacemavenQssrcmain esources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>D:EclipseeclipseWorkSpacemavenQssrc est esources</directory>
</testResource>
</testResources>
<directory>D:EclipseeclipseWorkSpacemavenQs arget</directory>
<finalName>mavenQs-1.0-SNAPSHOT</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>default-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>default-testResources</id>
<phase>process-test-resources</phase>
<goals>
<goal>testResources</goal>
</goals>
</execution>
<execution>
<id>default-resources</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-install</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<executions>
<execution>
<id>default-site</id>
<phase>site</phase>
<goals>
<goal>site</goal>
</goals>
<configuration>
<outputDirectory>D:EclipseeclipseWorkSpacemavenQs argetsite</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
<execution>
<id>default-deploy</id>
<phase>site-deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<outputDirectory>D:EclipseeclipseWorkSpacemavenQs argetsite</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
</executions>
<configuration>
<outputDirectory>D:EclipseeclipseWorkSpacemavenQs argetsite</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>D:EclipseeclipseWorkSpacemavenQs argetsite</outputDirectory>
</reporting>
</project>
Maven资源库分以下三种
木地贷源库:
用到的所有插件,第三方框架都会下载到本地库,只有当木地库中钱不到
时才采取从程下载,开发者可以通过 Maven安装目录下的 corsetting, xml文件,或者用户
录下的m2 settings文件中的< localReposifory元素进行设置
运程资源库:
远程资源库通常由公词或团队进行集中维护。通过远程资源库,可以让全公司的
项目使用相问的MAR包系统
中央资源库(默认):
中央资源库由 Maven官方维护,中央资源包括了各种公开的 Maven插
作,各种第三方项目。几乎所有的开源项目都会选择中央资源库发布框架,中央资连地址为
epol maven.org/maven?
当 Maven需要使用某个插件或JAR包时, Maven的搜索顺序为:本地资源库→远程资源库→中央当 Maven从中央资源库下载了某个插件或JAR包时, Maven都会自动在本地资源库中保存
上面配置信息用于定制该项目的配置信息,这段配置信息指定了该项目遵守的 License,并指定了目所属的组织、项目的开发者,以及对项目有贡献的人,这些信息都用于定制该 Maven项目,这息主要起描述性作用为该项目增加 Struts2的支持,可以在 pom. Xml中的<dependencies>元素内增加< dependency.。。>元素,每个< dependency,个元素定义一个依赖框架或依赖类库元素
<dependency../>可接受如下子元素
<groupId…/>:指定依赖框架或依赖类库所属的组织ID
< artifact.Id../>:指定依赖框架或依赖类库的项目名。
<version…/>:指定依赖框架或依赖类库的版本号。
<scope../>:指定依赖库起作用的范围,该子元素可接受 compile, provided, test, system; runtime、importt等值
<type…/>指定依赖框架或依赖类库的类型该元素默认值是jar还可以指定war、ejn-client、test-tar等值
红等值或为的型,该元素的默认值是加另外,还可以指定
<optional…/>该元素指定该依赖库为可选
<classifier…/>jdk版本号
<exclusions…/>该元素用于排除依赖
scope.>元素用于指定依赖库起作用的范围,该元素可指定如下值
compile默认的范围,编译、测试,打包时需要。
provided表示容器会在 runtime时提供
test:只用于测试阶段
system: 与provide类似,但要求jar是系统自带
import集成父POM文件中用dependencyManagement配置的依赖只能在dependencyManagement范围使用
以上是关于Marven的使用的主要内容,如果未能解决你的问题,请参考以下文章
marven编译时:<pre>错误: 不允许使用自关闭元素</pre>
有效解决办法:marven:Fatal error compiling: 无效的目标发行版: 11
AS构建失败,提示Cause:connect timed out Connect to marven.google.com...connect time out