您的位置:首页 > 其它

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

2017-03-21 20:49 585 查看

Maven使用

nexus相关信息

Mavennexus地址: http://192.168.210.185:8081/nexus


Repositories仓库主要包含以下:

4000
Public RepositoriesGroup(组)包括了 Releases、Snapshots、3rd party、Central、Sonatype Repository
3rd partyHosted(本地库)主要用于上传远程仓库没有的jar如:ojdbc-1.6.jar dubbo-2.8.4.jar jcaptcha-2.0-alpha-1.jarEpublib-core-3.0.jar fastdfs-client-Java-1.25.jar
Apache SnapshotsProxy(代理)https://repository.apache.org/snapshots/
CentralProxy(代理) 中央库http://maven.aliyun.com/nexus/content/groups/public/阿里云的中央库速度比较快
Releases稳定版本Simba项目稳定版本发布地址
Sonatype开发版本Simba 项目开发版本发布地址
创建用户\角色:略….

maven本地配置

MAVEN_HOME
F:\tools\apache-maven-3.2.3
配置path加入: %MAVEN_HOME%%MAVEN_HOME%\bin
 



 
Eclipse中maven配置:

 




注:当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>配置RepositoriespluginRepositories地址到nexus本地项目下载jar从nexus上下载(包括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生成环境配置打包时候会替生产环境的相应配置

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坐标 groupId、artifactId
父pom.xml的packaging类型必须是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.xmldubbo 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依赖的版本version在simba-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内执行了一系列的生命周期引起冲突 
 

eclipse中maven命令执行

项目右键=>RunAs=> Maven build…
Clean清除产生的项目



Clean install

 


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

Skip Tests表示跳过测试步骤
 


插件使用

war项目合并

pom.xml
<build>
<finalName>portal</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<overlays>
<groupId>com.rongji</groupId>
<artifactId>usermgr</artifactId>
</overlays>
<overlays>
<groupId>com.rongji</groupId>
<artifactId>authweb</artifactId>
</overlays>

</configuration>
</plugin>
</plugins>

</build>

 
在总的web的pom里面,加入要合并的war的依赖,如下:
  <dependency>
<groupId>com.rongji</groupId>
<artifactId>authWeb</artifactId>
<version>2.5.0-SNAPSHOT</version>
<type>war</type>
</dependency>

<dependency>
<groupId>com.rongji</groupId>
<artifactId>portalWeb</artifactId>
<version>2.5.0-SNAPSHOT</version>
<type>war</type>
</dependency>

 
注意:
如果多个war有相同的路径且相同的文件,如果总的web里面有,那么总的这个会覆盖分支的;如果总的没有,那么看合并的顺序,留下第一个的文件
 

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
创建Maven的Web项目
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有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
 
1、clean生命周期:清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
 
2、default生命周期:构建项目,重要的phase如下。
 
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
 
3、site生命周期:建立和发布项目站点,phase如下
 
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: