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

日常生活

如何导入elasticsearch的JAVA API?

eclipse中建geoserver源码