Maven在生成环境的使用及其配置说明
2017-03-21 20:49
585 查看
Maven使用
nexus相关信息
Mavennexus地址: http://192.168.210.185:8081/nexusRepositories仓库主要包含以下:
Public Repositories | Group(组) | 包括了 Releases、Snapshots、3rd party、Central、Sonatype Repository |
3rd party | Hosted(本地库) | 主要用于上传远程仓库没有的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 Snapshots | 4000Proxy(代理) | https://repository.apache.org/snapshots/ |
Central | Proxy(代理) 中央库 | 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 提供项目自动将源码打包并发布的功能 |
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:将项目站点发布到服务器
相关文章推荐
- 使用Maven自动打包配置文件生成开发环境,测试环境,生产环境
- 第1章 Java基本概念及环境配置——FAQ1.16 如何将程序中的文档注释提取出来生成说明文档?
- FCKeditor 2.6.4 ASP环境安装配置使用说明
- 如何用JMF编写MP3音乐播放器1——(图文)如何使用JMF及其环境变量的配置
- Appium环境配置笔记1--使用Maven解决包依赖
- JDK1.7.0_51使用javah工具生成.h声明文件的环境配置
- [使用心得]maven2之m2eclipse使用手册之三第一个Simple MavenProject与Pom.xml配置说明
- Maven3实战笔记环境配置与使用入门(一)
- [maven教程] maven的环境配置和使用
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- PHP环境配置:Windows下XAMPP的安装说明与使用
- 【转载】mysql5.1免安装的使用及其配置说明
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- Maven发布配置-根据不同的环境配置生成不同环境的War包
- VisualSVN.Server. V2.59 企业版破解及在域(Active Diretory)环境下使用配置说明
- PHP环境配置:Windows下XAMPP的安装说明与使用
- Linux上安装配置使用Tomcat说明文档和JDK环境变量配置
- FCKeditor 2.6.5 ASP环境安装配置使用说明
- Appium环境配置笔记1--使用Maven解决包依赖
- maven: 开发、测试和生产环境使用不同的配置文件例子