Maven笔记
目录
1.3.3. 配置 Modify Faceted Project12
1.3.4. 设置部署程序集(Web Deployment Assembly)12
1.3.6. 在pom.xml中添加所需要的jar包...13
1.4.1. project: pom的xml根元素。...15
以下全部在apache-maven-3.0.4版本 windows系统中验证
1.1. 下载地址
http://maven.apache.org/download.html
http://maven.apache.org/plugins/maven-release-plugin/
http://subclipse.tigris.org/update/
1.2. 安装
1. 安装JDK,设置环境变量JAVA_HOME classpath path
2. 设置maven的path:E:\Program Files\apache-maven-3.0.4\bin
3. 验证是否安装成功:cmd ->mvn –v
4. Eclipse安装插件
HELP à install Newsoftware à
http://m2eclipse.sonatype.org/sites/m2e
http://m2eclipse.sonatype.org/sites/m2e-extras
1.3. 简单例子
1.3.1. 建立Maven项目
接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例:
1.3.1.1. 选择建立Maven Project
选择File -> New -> Other,在New窗口中选择 Maven -> Maven Project。点击newxt。
1.3.1.2. 选择项目路径
Use default Workspace location默认工作空间。
1.3.1.3. 选择项目类型
在Artifact Id中选择maven-archetype-webapp
1.3.1.4. 输入Group ID和 Artifact ID,以及Package
Group ID一般写大项目名称。ArtifactID是子项目名称。
例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。
Package是默认给你建一个包,不写也可以。
1.3.1.5. 刚建立好后的文件结构如下图
如果这里显示的内容多,一般是Filters设 置的问题。或perspective为JavaEE模式,改成Java模 式就可以了。
1.3.2. 配置项目
接下来就需要更改好多配置了。
1.3.2.1. 添加Source文件夹
接下来需要添加src/main/java,src/test/java ,src/test/resources三个文件夹。右键项目根目录点击New -> Source Folder,
建出这三个文件夹。注意不是建普通的Folder,而是Source Folder。
1.3.2.2. 更改class路径
右键项目,Java Build Path -> Source
下面应该有4个文件夹。src/main/java,src/main /resources,src/test/java ,src/test/resources。
双击每个文件夹的Output folder,选择路径。
src/main/java,src/main/resources,选择target /classes;
src/test/java ,src/test/resources,选择target/test-classes;
选上Allow output folders for source folders.
在此处还要更改:
更改文件夹显示的顺序:点击Order and Export。
更改JDK版本:在Libraries双击JRE System Library,要1.6版本。
1.3.2.3. 把项目变成Dynamic Web项目
2.3.1 右键项目,选择ProjectFacets,点击Convert to faceted from
配置Project Facets
更改Dynamic Web Module的Version为2.5。(3.0为Java7的)。
如果提示错误,可能需要在Java Compiler设置Compiler compliance level 为1.6。或者需要在此窗口的Java的Version改成1.6。
1.3.3. 配置 Modify Faceted Project
点击Further configuration available…,弹出Modify Faceted Project窗口
此处是设置web.xml文件的路径,我们输入src/main/webapp。
Generate web.xml deployment descriptor自动生成web.xml文件,可选可不选。
1.3.4. 设置部署程序集(Web Deployment Assembly)
上面步骤设置完成后,点击OK,Properties窗口会关 闭,在右键项目打开此窗口。在左侧列表中会出现一个Deployment Assembly,点击进去后,如下图:
此处列表是,部署项目时,文件发布的路径。
1,我们删除test的两项,因为test是测试使用,并不需要部署。
2,设置将Maven的jar包发布到lib下。
Add -> JavaBuild Path Entries -> Maven Dependencies -> Finish
设置完成效果图
1.3.5. 构建框架
1.3.6. 在pom.xml中添加所需要的jar包
使用Maven POMeditor打开项目中的pom.xml文件,选择Dependencies,在Dependencies栏目点击Add进行,首先弹出一个搜索按钮,例 如输入jsf,就会自动搜索关于JSF相关的jar包,我们选择2.0.4版本的jsf。将jsf包全部添加进 来。需要添加的其他jar包有:junit、jstl。或者点击pom.xml直接编辑pom.xml文件。这样可以直接copy过来 dependencies内容。
我们的pom.xml文件可直接复制下面的内容。
<projectxmlns="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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>RulesMaven</groupId> <artifactId>RulesMaven</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>RulesMavenMaven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.4-b09</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.4-b09</version> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>aristo</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
</dependencies> <build> <finalName>RulesMaven</finalName> </build> </project>
|
1.3.7. 发布
对着工程点右键:RunAs -> Maven install
然后再Run As-> Maven package.
生成完后用Tomcat跑即可。
1.4. POM、Settings介绍
1.4.1. project: pom的xml根元素。
parent: 声明继承。
modules: 声明聚合,该值是一个当前POM的相对目录。用户项目的聚合。
groupId: 定义当前Maven项目隶属的实际项目。
artifactId: 定义实际项目中的一个Maven项目模块,一般为实际项目名称。
version: 定义Maven项目当前版本。
groupId、artifactId、version三个属性构成项目的坐标,必须全部填写。
packaging: 坐标元素之一,可以不填,不填默认jar,表示项目构建成jar包;值为war表示可部署的web项目。
name: 名称。
description: 项目描述。
organization: 所属组织。
licenses: 许可证。
mailingLists: 邮件列表。
developers: 开发者。
contributors: 贡献者。
issueManagement: 问题追踪系统。
ciManagement: 持续集成系统。
scm: 版本控制系统。
prerequisites-->maven: 要求maven最低版本,默认值为2.0.
build-->sourceDirectory: 主源码目录。
build-->scriptSourceDirectory: 脚本源码目录。
build-->testSourceDirectory: 测试源码目录。
build-->outputDirectory: 主源码输出目录。
build-->testOutputDirectory: 测试源码输出目录。
build-->resources-->resource: 主资源目录。
build-->testResources-->testResource:测试资源目录。
build-->finalName: 输出主构件的名称。
build-->directory: 输出目录。
build-->filters-->filter: 通过properties文件定义资源过滤属性。
build-->extensions-->extension: 扩展Maven的核心。
build-->pluginManagement: 插件管理。
build-->plugins-->plugin: 插件。
profiles-->profile: POM Profile。
distributionManagement-->repository: 发布版本部署仓库。
distributionManagement-->snapshotRepository:快照版本部署仓库。
distributionManagement-->site: 站点部署。
repositories-->repository: 仓库。
pluginRepositories-->pluginRepository: 插件仓库。
dependencies-->dependency: 依赖管理。
properties: Maven属性。
reporting-->plugins: 报告插件。
a-->b表示a元素嵌套着b元素。
1.4.2. settings.xml文件配置
settings: settings.xml的根元素。
localRepository: 本地仓库。
interactiveMode: Maven是否与用户交互,默认值为true。
offline: 离线模式,默认false。
pluginGroups-->pluginGroup: 插件组。
servers-->server: 下载与部署仓库的认证信息。
mirrors-->mirror: 仓库镜像。
proxies-->proxy: 代理。
profiles-->profile: Settings Profile。
activeProfiles-->activeProfile: 激活Profile。
Maven目录下的conf文件夹下的settings.xml为全局的,影响所有用户的配置。一般建议修改c:\Users\用户名\.m2\目录下的settings.xml,属于局部的,只对当前目
录下的用户有用。
1.5. Nexus本地仓库
下载地址:http://nexus.sonatype.org/downloads
Nexus 内置了如下仓库:
1) MavenCentral :代理 Maven 的中央仓库,策略为 release
2) Releases :策略为 Release 的宿主类仓库,用来部署组织内部的 release 版本构件
3) Snapshots :策略为 Snapshot 的宿主类仓库,用来部署组织内部的 release 版本构件
4) 3rdparty :策略为 Release 的宿主类仓库,用来部署无法从公共仓库获得的第三方 release 版构件。
5) ApacheSnapshots :代理 Apache Maven 仓库,策略为 Snapshot
6) CodehausSnapshots :代理 Codehaus Maven 仓库,策略为 Snapshot
7) GoogleCode :代理 Google Code Maven 仓库,策略为 Release
8) Java.net– Maven 2 :代理 Java.net Maven 仓库,策略为 Release
9) PublicRepositories :将上述策略为 Release 的仓库聚合并通过一致的地址提供服务。
10) PublicSnapshot Repositories :将上述策略为 Snapshot 的仓库聚合并通过一致的地址提供服务。
1.5.1. 安装
下载后解压
进入前目录
E:\nexus-2.1.1\bin\jsw\windows-x86-32
InstallNexus.bat 安装
UninstallNexus.bat 卸载
nexus为windows service,
如果需要设置nexus为开机自动启动就可以安装为windows service然后设置启动方式为自动。
Nexus.bat是直接在命令行中启动Nexus,如果不想安装Nexus为windows service,可以用这个文件来手工控制Nexus的启动退出。
安装完后默认用户:admin 密码 nexus123
最重要的一件事情就是开启远程索引下载,索引这个功能实在是太好用了。
nexus默认是关闭远程索引下载功能的,主要是担心会造成对服务器的巨大负担,需要我们手工开启。
开启的方式:
点击Administration菜单下面的Repositories,将这三个仓库Apache Snapshots,Codehaus Snapshots,Maven Central的Download RemoteIndexes修改为true。然后在这三个仓库上分别右键,选择Re-index,这样Nexus就会去下载远程的索引文件。
1.5.2. 安装删除第三方包
第一步到第三方管理菜单
设置参数选择文件
第三部上传
更新第一个tab update Index 到第二个browse Index refresh查看是否上传
1.5.3. 搜索包
1.5.4. 本地settings设置
在prefiles加入
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://192.168.1.110:8081/nexus/content/repositories/thirdparty</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
末尾加入
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
POM设置
<url>http://192.168.1.110:8081/nexus/content/repositories/thirdparty</url>
1.5.5. 部署到远程仓库
1. Settings 的servers节点加入
<server>
<id>releases</id>
<username>deployment</username>
<password>deployment</password>
</server>
2. POM加入
<distributionManagement>
<!--远程仓库-->
<repository>
<id>releases</id>
<url>http://192.168.1.110:8081/nexus/content/repositories/releases</url>
</repository>
<!--快照-->
<snapshotRepository>
<id>snapshots</id>
<name>NexusSnapshot Repository</name>
<url>http://192.168.1.110:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
1.6. Maven操作
1.6.1. 模块管理
基本操作
Maven2 的运行命令为: mvn
1.6.1.1. 常用命令
mvn archetype:create :创建 Maven 项目
mvn validate:验证工程是否正确,所有需要的资源是否可用
mvn compile :编译源代码
mvn test-compile :编译测试代码
mvn test : 运行应用程序中的单元测试
mvn site : 生成项目相关信息的网站
mvn clean :清除目标目录中的生成结果
mvn package : 依据项目生成 对应包(war jar等)文件
mvn install :在本地 Repository 中安装对应包(war jar等)
mvn deploy 部署项目到仓库
mvn eclipse:eclipse :生成 Eclipse 项目文件
1.6.1.2. 生成Maven项目
建一个 JAVA 项目 :mvn archetype:create -DgroupId=com.demo-DartifactId=App
建一个 web 项目 : mvnarchetype:create -DgroupId=com.demo -DartifactId=web-app
-DarchetypeArtifactId=maven-archetype-webapp
1.6.1.3.生成 Eclipse 项目
普通 Eclipse 项目执行 :mvneclipse:eclipse
Eclipse WTP 项目执行 : mvn eclipse:eclipse –Dwtpversion=1.0 ( wtp1.0 以上版本均可用)
依赖包上传仓库
1.6.1.4. settings.xml配置
1. 打开settings.xml
2. 在servers节点加入
<server>
<id>releases</id>
<username>deployment</username>
<password>deployment</password>
</server>
<server>
<id>snapshots</id>
<username>deployment</username>
<password>deployment</password>
</server>
3. Profiles加入
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>
http://192.168.1.110:8081/nexus/content/groups/public/
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
4. 末尾加入
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
1.6.1.5. pom.xml设置
1. 仓库地址设置
<!-- 仓库管理-->
<distributionManagement>
<!--远程仓库-->
<repository>
<id>releases</id>
<url>
http://192.168.1.110:8081/nexus/content/repositories/releases
</url>
</repository>
<!--快照-->
<snapshotRepository>
<id>snapshots</id>
<name>NexusSnapshot Repository</name>
<url>
http://192.168.1.110:8081/nexus/content/repositories/snapshots
</url>
</snapshotRepository>
</distributionManagement>
1.6.1.6. Eclipse操作
1.6.2. SCM配置
如果多个Module只需要再根节点pom.xml配置
SCM 注意:
1. 在打tag、branch时候需要更新到最新的版本,本地代码全部提交。不能含有未提交代码
2. branch tag后会自动升级版本号,如果需要打相同版本的branch可以执行
更新版本号
mvn release:update-versions -DdevelopmentVersion=1.0.3-DautoVersionSubmodules=true
3. 标签版本必须 –SNAPSHOT后缀
1.6.2.1. SVN安装
1. 下载安装:
http://www.sliksvn.com/en/download
下载后安装:
2. 加入环境变量 path
如:C:\Program Files\SlikSvn\bin
3. 完成后验证:
svn –version
1.6.2.2. settings.xml配置
servers节点加加入子节点:SVN用户 密码
<server>
<id>svn.warpspeed.com.au</id>
<username>leon</username>
<password>leon</password>
</server>
1.6.2.3. pom.xml配置
添加插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagBase>http://192.168.1.110:81/svn/dev/code/tags</tagBase>
<branchName>platform-${project.version}</branchName> <branchBase>
http://192.168.1.110:81/svn/dev/code/branch
</branchBase>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
设置SCM地址
<scm>
<connection>
scm:svn:http://192.168.1.110:81/svn/dev/code/platform
</connection>
<developerConnection>
scm:svn:http://192.168.1.110:81/svn/dev/code/platform
</developerConnection>
</scm>
1.6.2.4. SCM-SVN标签
生成SVN标签:
mvn -X clean release:clean release:prepare
运行完后查看
1.6.2.5. SCM-SVN分支
生成SVN分支
mvn -X clean release:clean release:branch
1.7. Maven部署tomcat、调试
1. 配置Tomcat
进入Tomcat目录conf\tomcat-users.xml加入
<role rolename="manager"/>
<role rolename="admin"/>
<user username="fanghai" password="fanghaikeji"roles="admin,manager"/>
2. Settings加入
<!-- tomcat -->
<server>
<id>TomcatServer</id>
<username>fanghai</username>
<password>fanghaikeji</password>
</server>
3. pom.xml配置
对应webapp项目中<build>节点加入一下信息
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://127.0.0.1:80/manager</url>
<server>TomcatServer</server>
<path>/fts</path>
</configuration>
</plugin>
</plugins>
</pluginManagement>
有可能内存溢出
设置参数
Windows
set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m
Linux
export MAVEN_OPTS="-Xmx512m-XX:MaxPermSize=128m"
mvn clean package tomcat:deploy
命令来将项目打包成一个WAR文件,并将其部署到Tomcat服务器
重新部署到tomcat
mvntomcat:redeploy -e
删除tomcat项目
mvntomcat:undeploy -e
URL:http://127.0.0.1:8080/manager/html验证是否部署成功。