标签:maven
1.1 Maven使用
Maven nexus地址:
http://192.168.210.185:8081/nexus
Repositories 仓库主要包含以下:
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.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 项目开发版本发布地址 |
创建用户\角色:略….
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> | 配置 Repositories pluginRepositories 地址到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生成环境配置 | 打包时候会替生产环境的相应配置 |
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.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依赖的版本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内执行了一系列的生命周期引起冲突 |
项目右键=>Run As => Maven build…
Clean清除产生的项目
Clean install
Clean install –Ptest 使用测试环境配置profile
Skip Tests 表示跳过测试步骤
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 | 创建Maven的普通java项目 |
mvn archetype:create | 创建Maven的Web项目 |
mvn eclipse:eclipse | 生成eclipse项目 |
mvn idea:idea | 生成idea项目 |
mvn eclipse:clean | 清除eclipse的一些系统设置 |
mvn help:describe -Dplugin=help | 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:将项目站点发布到服务器
本文出自 “12735262” 博客,转载请与作者联系!
标签:maven
原文地址:http://12745262.blog.51cto.com/12735262/1909020