Maven在生成环境的使用及其配置说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven在生成环境的使用及其配置说明相关的知识,希望对你有一定的参考价值。

1.1 Maven使用

1.1.1 nexus相关信息

Maven nexus地址:

http://192.168.210.185:8081/nexus

 

 

Repositories 仓库主要包含以下:

Public Repositories

Group()

包括了 ReleasesSnapshots3rd party CentralSonatype Repository

3rd party

Hosted(本地库)

主要用于上传远程仓库没有的jar如:ojdbc-1.6.jar dubbo-2.8.4.jar jcaptcha-2.0-alpha-1.jar

Epublib-core-3.0.jar fastdfs-client-java-1.25.jar

Apache Snapshots

Proxy(代理)

https://repository.apache.org/snapshots/

 

Central

Proxy(代理) 中央库

http://maven.aliyun.com/nexus/content/groups/public/

阿里云的中央库速度比较快

Releases

稳定版本

Simba项目稳定版本发布地址

Sonatype

开发版本

Simba 项目开发版本发布地址

 

创建用户\角色:略….

1.1.2 maven本地配置

MAVEN_HOME

F:\tools\apache-maven-3.2.3

配置path 加入: %MAVEN_HOME% %MAVEN_HOME%\bin

 

技术分享 

 

Eclipsemaven配置:

技术分享 

 

技术分享 

注:setting.xml中的配置变化时候需要需要点击Update Settings、及其 Reindex

 

配置Setting.xml 其中包含配置本地库、配置nexus私有库、deploy 发布账号配置、默认开发环境JDK设置、生成环境配置信息

<?xml version="1.0" encoding="UTF-8"?>

 

 

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

 

  <localRepository>F:\maven_repo</localRepository>

  

  

  <pluginGroups>

   

  </pluginGroups>

 

 

  <proxies>

   

  </proxies>

 

  <servers>

    

<server>

<id>nexus-snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

<server>

<id>nexus-releases</id>

<username>admin</username>

<password>admin123</password>

</server>

  </servers>

 

 

  <mirrors>

   

 

<mirror>

<id>nexus</id>

        <mirrorOf>*</mirrorOf>     

        <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

    </mirror>

  </mirrors>

  

  

  <profiles>

    


<profile>

<id>jdk-1.8</id>

<activation>

<activeByDefault>true</activeByDefault>

<jdk>1.8</jdk>

</activation>

<properties>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

</properties>

</profile>



<!-- 指定默认的开发环境 -->

<profile>

      <id>environment</id>

  <!-- 默认激活 -->

      <activation>

        <activeByDefault>true</activeByDefault>

      </activation>

  <properties>

<environment.type>dev</environment.type>

  </properties>

 

    </profile>


<profile>

<!-- 生产环境 -->

<id>product</id>

<activation>

<property>

<name>environment.type</name>

<value>pro</value>

</property>

</activation>

<properties>

<profiles.active>pro</profiles.active>

<jdbc.driverClassName>jdbc.driverClassName.prosetting</jdbc.driverClassName>

<jdbc.url>urlsetting</jdbc.url>

<jdbc.username>usernamesetting</jdbc.username>

<jdbc.password>passwordsetting</jdbc.password>

</properties>

</profile>


<profile>

       <id>nexus</id>

       <repositories>

         <repository>

           <id>nexus</id>

           <name>Nexus</name>

           <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

           <releases><enabled>true</enabled></releases>

           <snapshots><enabled>true</enabled></snapshots>

         </repository>

       </repositories>

       <pluginRepositories>

         <pluginRepository>

           <id>nexus</id>

             <name>Nexus</name>

             <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

             <releases><enabled>true</enabled></releases>

             <snapshots><enabled>true</enabled></snapshots>

         </pluginRepository>

       </pluginRepositories>

     </profile>

  </profiles>

 

  

  <activeProfiles>

    <activeProfile>nexus</activeProfile>

  </activeProfiles>

</settings>

 

简要说明相关配置及其作用:

1

<localRepository>F:\maven_repo</localRepository>

本地仓库地址


2

<server>

<id>nexus-snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

<server>

<id>nexus-releases</id>

<username>admin</username>

<password>admin123</password>

</server>

Maven打包发布时候需要的账号密码。

Snapshots测试版本

Releases 稳定版本

 

注:可以为不同的项目配置不同的账号及其密码

3

<mirror>

<id>nexus</id>

        <mirrorOf>*</mirrorOf>     

        <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

    </mirror>

配置镜像


4

<profile>

       <id>nexus</id>

       <repositories>

         <repository>

           <id>nexus</id>

           <name>Nexus</name>

           <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

           <releases><enabled>true</enabled></releases>

           <snapshots><enabled>true</enabled></snapshots>

         </repository>

       </repositories>

       <pluginRepositories>

         <pluginRepository>

           <id>nexus</id>

             <name>Nexus</name>

             <url>http://192.168.210.185:8081/nexus/content/groups/public/</url>

             <releases><enabled>true</enabled></releases>

             <snapshots><enabled>true</enabled></snapshots>

         </pluginRepository>

       </pluginRepositories>

     </profile>

  </profiles>

配置

Repositories

pluginRepositories

地址到nexus

本地项目下载jarnexus上下载(包括maven 插件的jar)

5

  <activeProfiles>

    <activeProfile>nexus</activeProfile>

  </activeProfiles>

激活 Profile


6

<profile>

<id>jdk-1.8</id>

<activation>

<activeByDefault>true</activeByDefault>

<jdk>1.8</jdk>

</activation>

<properties>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

</properties>


</profile>

指定开发环境默认JDK版本为JDK1.8


7

<!-- 指定默认的开发环境 -->

<profile>

      <id>environment</id>

  <!-- 默认激活 -->

      <activation>

        <activeByDefault>true</activeByDefault>

      </activation>

  <properties>

<environment.type>dev</environment.type>

  </properties>

 

    </profile>

激活开发环境配置

 

 

 


8

<profile>

<!-- 生产环境 -->

<id>product</id>

<activation>

<property>

<name>environment.type</name>

<value>pro</value>

</property>

</activation>

<properties>

<profiles.active>pro</profiles.active>

<jdbc.driverClassName>jdbc.driverClassName.prosetting</jdbc.driverClassName>

<jdbc.url>urlsetting</jdbc.url>

<jdbc.username>usernamesetting</jdbc.username>

<jdbc.password>passwordsetting</jdbc.password>

</properties>

</profile>

激活product生成环境配置

打包时候会替生产环境的相应配置

 

1.1.3 pom.xml文件配置的相关说明

 

simba-common-parent\pom.xml (pom)

以下是父pom.xml的相关说明

1

<groupId>com.rjsoft.simba.common</groupId>

<artifactId>simba-common-parent</artifactId>

<packaging>pom</packaging>

<version>1.0-SNAPSHOT</version>

<name>parent</name>

pom.xml坐标 groupIdartifactId

pom.xmlpackaging类型必须是pom

Version 版本号其中SNAPSHOT表示发布到snapshot仓库

Name 名称

2

<modules>

<module>../simba-common</module>

<module>../simba-common-core</module>

<module>../simba-common-web</module>

<module>../simba-component-redis</module>

<module>../simba-component-fastdfs</module> 

<module>../simba-config-uums</module>

<module>../simba-facade-uums</module>

<module>../simba-service-uums</module> 

<module>../simba-web-uums</module>

<module>../simba-server-api/simba-uums-api</module>

</modules>

Modules 包含的模块

方便统一构建

 

 

 

3

<url>http://maven.apache.org/</url>

项目帮助地址、在生成站点信息时候使用 mvn site

4

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 

<!-- Simba: 项目的工程版本号 begin -->

<!-- common projects -->

<simba-common.version>1.0-SNAPSHOT</simba-common.version>

用户自定义变量。 Maven包含5种变量:

系统属性

自定义属性

project.*

settings.*

env.*

Maven内置变量说明

${basedir} 项目根目录

${project.build.directory} 构建目录,缺省为target

${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

${project.packaging} 打包类型,缺省为jar

${project.xxx} 当前pom文件的任意节点的内容

 

5

<distributionManagement>

<repository>

<id>nexus-releases</id>

<name>nexus-releases</name>

<url>http://192.168.210.185:8081/nexus/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>nexus-snapshots</id>

<name>nexus-snapshots</name>

<url>http://192.168.210.185:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

部署地址。包含正式版本部署地址、开发版部署地址

 

命令:mvn clean deploy

 

6

<dependencyManagement>

<dependencies>

<!--Spring begin -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

pom统一定义依赖的jar文件的版本号。子模块只要指定groupId artifactId 即可,无需指定版本号

 

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

</dependency>

 

7

<build>

  <plugins>

  <plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-source-plugin</artifactId>

</plugin>

<plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-report-plugin</artifactId>

      </plugin>

  </plugins>

  </build>

插件使用

maven-surefire-report-plugin

用于生成html格式的报告

 

maven-compiler-plugin

编译源代码

 

maven-source-plugin

提供项目自动将源码打包并发布的功能

 

simba-service-uums/pom.xml dubbo service pom配置详解

1

<parent>

<groupId>com.rjsoft.simba.common</groupId>

<artifactId>simba-common-parent</artifactId>

<version>1.0-SNAPSHOT</version>

<relativePath>../simba-common-parent</relativePath>

  </parent>

指定parent. Parent 中配置依赖包的版面、公共插件等信息

2

<groupId>com.rjsoft.simba.service</groupId>

  <artifactId>simba-service-uums</artifactId>

  <packaging>jar</packaging>

Simba service uums坐标

因为是dubbo的服务提供者 使用jar的方式打包

3

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

</dependency>

依赖的包。其中jar依赖的版本versionsimba-common-parent中定义

4

<resource>

<targetPath>${project.build.directory}/classes</targetPath>

<directory>src/main/resources</directory>

<filtering>true</filtering>

<includes>

<include>**/*.xml</include>

<include>**/*.properties</include>

</includes>

</resource>

打包时候将相应的配置文件进行打包。如果不太确定配置文件的类型可以使用:

<include>**/*</include>

 

Filtering true 表示:

是否使用过滤器。其中的配置文件在构建的时候会被pom中定义的属性替换掉。实现一个项目部署到不同的环境

5

<resource>

<targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>

<directory>src/main/resources/spring</directory>

<filtering>true</filtering>

<includes>

<include>spring-context.xml</include>

</includes>

</resource>

Dubbo采用standalone(独立运行,不需要tomcat等容器)需要将配置文件spring-context.xml打包到/META-INF/spring下面。Dubbo手册中描述:

Spring Container

· 自动加载META-INF/spring目录下的所有Spring配置。

· 配置:(配在java命令-D参数或者dubbo.properties)

· dubbo.spring.config=classpath*:META-INF/spring/*.xml ----配置spring配置加载位置

 


<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<configuration>

<classesDirectory>target/classes/</classesDirectory>

<archive>

<manifest>

<mainClass>com.alibaba.dubbo.container.Main</mainClass>

<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->

<useUniqueVersions>false</useUniqueVersions>

<addClasspath>true</addClasspath>

<classpathPrefix>lib/</classpathPrefix>

</manifest>

<manifestEntries>

<Class-Path>.</Class-Path>

</manifestEntries>

</archive>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<executions>

<execution>

<id>copy-dependencies</id>

<phase>package</phase>

<goals>

<goal>copy-dependencies</goal>

</goals>

<configuration>

<type>jar</type>

<includeTypes>jar</includeTypes>

<outputDirectory>

${project.build.directory}/lib

</outputDirectory>

</configuration>

</execution>

</executions>

</plugin>

插件maven-jar-plugin

打包jar文件时,配置manifest文件,加入lib包的jar依赖

 

插件maven-dependency-plugin

解决Maven插件在Eclipse内执行了一系列的生命周期引起冲突 

 

1.1.3 eclipsemaven命令执行

项目右键=>Run As => Maven build

Clean清除产生的项目

技术分享 

Clean install

技术分享 

 

Clean install –Ptest 使用测试环境配置profile

技术分享 

Skip Tests 表示跳过测试步骤

 

1.1.3 maven 相关概念

Maven 命令

mvn clean

清除产生的项目

mvn test

运行测试

mvn install

在本地Repository中安装jar

mvn deploy

发布

mvn compile

编译源代码

mvn test-compile

编译测试代码

mvn site

产生site

mvn package

打包

mvn -Dtest package

组合使用goal命令,如只打包不测试

mvn jar:jar

只打jar

mvn test -skipping compile -skipping test-compile

只测试而不编译,也不测试编译

( -skipping 的灵活运用,当然也可以用于其他组合命令

mvn archetype:create 
   -DgroupId=packageName 
   -DartifactId=projectName

创建Maven的普通java项目

mvn archetype:create 
    -DgroupId=packageName    
    -DartifactId=webappName 
   -DarchetypeArtifactId=maven-archetype-webapp

创建MavenWeb项目

mvn eclipse:eclipse

生成eclipse项目

mvn idea:idea

生成idea项目

mvn eclipse:clean

清除eclipse的一些系统设置

mvn help:describe -Dplugin=help
mvn help:describe -Dplugin=help -Dfull
mvn help:describe -Dplugin=compiler -Dmojo=compiler -Dfull
mvn help:describe-pom  
mvn help:describe -Dplugin=eclipse 

maven 插件帮助信息

mvn help:effective-pom

查看有效pom

mvn cobertura:cobertura

代码覆盖率

mvn install -PrunTest

指明使用的profiles

mvn clean install -Denvironment.type=prod

指明自定义参数的值

mvn help:active-profiles

查看生效的profile

 

三套生命周期

 

Maven有三套相互独立的生命周期,分别是cleandefaultsite。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

 

1clean生命周期:清理项目,包含三个phase

1pre-clean:执行清理前需要完成的工作

2clean:清理上一次构建生成的文件

3post-clean:执行清理后需要完成的工作

 

2default生命周期:构建项目,重要的phase如下。

 

1validate:验证工程是否正确,所有需要的资源是否可用。

2compile:编译项目的源代码。  

3test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。

4Package:把已编译的代码打包成可发布的格式,比如jar

5integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。

6verify:运行所有检查,验证包是否有效且达到质量标准。

7install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。

8Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

 

3site生命周期:建立和发布项目站点,phase如下

 

1pre-site:生成项目站点之前需要完成的工作

2site:生成项目站点文档

3post-site:生成项目站点之后需要完成的工作

4site-deploy:将项目站点发布到服务器


本文出自 “12735262” 博客,转载请与作者联系!

以上是关于Maven在生成环境的使用及其配置说明的主要内容,如果未能解决你的问题,请参考以下文章

Java JDK环境配置及说明

Maven使用说明

Swagger

Eclipse IDE -maven,安装配置说明,实际操作完成

Maven详解及其环境配置

maven相关说明,以及使用Testng相关