- 浏览: 36186 次
- 性别:
- 来自: 上海
文章分类
最新评论
Maven
Maven 简介
Maven 最初的目的是在Jakarta Turbine 项目中使构建处理简单化。几个项目之间使用到的Ant build 文件差异很小,各个JAR 都存入CVS 。因此希望有一个标准的方法构建各个工程,清晰的定义一个工程的组成,一个容易的方法去发布项目信息并且去提供一种在各个项目之间共享JAR 包。
结果出现了一种功能能用于构建和管理任何基于java 的工程。Maven 小组希望他们已经做到了一些事情,这将有助于Java 开发者更容易的完成每天的工作并且有助于理解任何基于java 的项目。
Maven 的目标是:
-
使构建过程更容易
-
提供统一构建系统
-
提供高质量的项目信息
-
提供开发的最佳实践指南
-
能无缝的加入新的特性
对Maven 的错误理解
-
Maven 是一个站点和文档制作工具。
-
Maven 扩展了Ant ,使其能下载到各种依赖包
-
Maven 是一系列可重用的Ant 脚本
Maven 的版本。
Maven 现在主要有Maven 1.x 和Maven 2.x ,其中现在最新版本是Maven 2.02 。
Maven 2 完成了对Maven 1 的重写。重写的首要目的是要提供了强大的Jave 构建和包含API 的项目,允许Maven 被植入任何地方,尤其是高级别的产品如IDEs 、质量工具、报告工具等这些。Maven 2 构建生命周期的概念正式化,其比Maven 更易扩展。
因此现在我们主要研究的就是Maven 2 。
Maven 的安装
-
Windows 2000/xp 下的安装
-
解压缩maven-2.0.2-bin.zip 到你希望安装Maven 2.0.2 的所在目录。这里假设你选择了C:/ProgramFiles/Apache Software Foundation/maven-2.0.2.
-
将C:/Program Files/Apache Software Foundation/maven-2.0.2/bin 目录加入到你的%path% 环境变量中。
-
同时,确认JAVA_HOME 是否正确设置成功。
-
运行 mvn --version 确认是否安装成功。
-
显示Maven version: 2.0.2 则表示安装成功。
-
基于 Unxi - based 的操作系统( Linux , Solaris and Mac OS X )
-
解压缩发布包到你希望安装Maven 2.0.2 的所在目录。这里假设你选择了/usr/local/maven-
-
将/usr/local/maven-2.0.2/bin 目录加入到你的path 环境变量中, 例如:PATH=/usr/local/maven-2.0.2y/bin: $PATH 。
-
同时,确认JAVA_HOME 是否正确设置成功。
-
运行 mvn --version 确认是否安装成功。
-
显示Maven version: 2.0.2 则表示安装成功。
Maven 主要功能列表
Maven 是一种对项目的管理工具,它提供了一种方式来管理以下项目中涉及到的工作内容, 同时以下也是Maven 的主要功能:
-
构建项目(Builds )
-
文档编制(Documentation )
-
报告(Reporting )
-
依赖管理(Dependencies )
-
配置管理(SCMs )
-
发布管理(Releases )
构建项目
-
首先创建一个 Maven 工程
Maven 可用于构建java 应用工程和java web 应用工程。
-
-
WebApp
-
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp
my-webapp
|-- pom.xml
`-- src
`-- main
|-- webapp
| |-- WEB-INF
| | `-- web.xml
| `--index.jsp
`-- resources
其他的目录则需要自己补充。
其pom.xml 文件内容如下:
< project xmlns =" 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 > com.mycompany.app </ groupId > < artifactId > my-webapp </ artifactId > < packaging > war </ packaging > < version > 1.0-SNAPSHOT </ version > < name > Maven Webapp Archetype </ name > < url > http://maven.apache.org </ url > < dependencies > < dependency > < groupId > junit </ groupId > < artifactId > junit </ artifactId > < version > 3.8.1 </ version > < scope > test </ scope > </ dependency > </ dependencies > < build > < finalName > my-webapp </ finalName > </ build > </ project >
|
-
-
App
-
mvn archetype:create -DgroupId=com.mycompany.ap -DartifactId=my-app
命令正确执行后,生成如下目录:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
其pom.xml 文件内容如下:
< project xmlns =" 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 > com.mycompany.ap </ groupId > < artifactId > my-app </ artifactId > < packaging > jar </ packaging > < version > 1.0-SNAPSHOT </ version > < name > Maven Quick Start Archetype </ name > < url > http://maven.apache.org </ url > < dependencies > < dependency > < groupId > junit </ groupId > < artifactId > junit </ artifactId > < version > 3.8.1 </ version > < scope > test </ scope > </ dependency > </ dependencies > </ project > |
-
Maven 项目的标准目录介绍
Maven 提倡使用一个共同的标准目录结构,使开发人员能在熟悉了一个Maven 工程后,对其他的Maven 工程也能清晰了解。这样做也省去了很多设置的麻烦。
以下的文档介绍是Maven 希望的目录结构,并且也是目录创建工程是采用的目录结构。Maven 推荐大家尽可能的遵守这样的目录结构。
src/main/java |
Application/Library sources |
src/main/resources |
Application/Library resources |
src/main/filters |
Resource filter files |
src/main/assembly |
Assembly descriptors |
src/main/config |
Configuration files |
src/main/webapps |
Web application sources |
src/test/java |
Test sources |
src/test/resources |
Test resources |
src/test/filters |
Test resource filter files |
src/site |
Site |
LICENSE.txt |
Project's license |
README.txt |
Project's readme |
在顶级目录上是工程的描述文件pom.xml (如果使用 Ant 则还包括其他属性文件, maven.xml 或 build.xml ) , 另外还包括提供给最终用户的文件,如, README.txt , LICENSE.txt 等等。
顶级目录还包括两个子目录:src ,target 。顶级目录下可能出现的其他目录仅仅是CVS 或.svn 和其他多模块工程的工程目录,最好不要再有其他目录。
Target 目录是所有工程编译构建的输出目录。
Src 目录包含所有工程的源码文件,配置文件,资源文件等等。它下面的子目录一般包含main (主要的工程源文件),test (测试文件),site (项目站点文件)。
-
项目构建的生命周期的介绍
Maven 2 是围绕着构建生命周期概念设计的。这意味着,构建或者发布的过程已经被清晰的定义了。
当我们使用Maven 构建工程时,我们只需要了解几个Maven 定义好的命令即可,其他的工作则交给POM 来完成。
以下给出Maven 提供的构建生命周期列表:
validate |
validate the project is correct and all necessary information is available. |
generate-sources |
generate any source code for inclusion in compilation. |
process-sources |
process the source code, for example to filter any values. |
generate-resources |
generate resources for inclusion in the package. |
process-resources |
copy and process the resources into the destination directory, ready for packaging. |
compile |
compile the source code of the project. |
process-classes |
post-process the generated files from compilation, for example to do bytecode enhancement on Java classes. |
generate-test-sources |
generate any test source code for inclusion in compilation. |
process-test-sources |
process the test source code, for example to filter any values. |
generate-test-resources |
create resources for testing. |
process-test-resources |
copy and process the resources into the test destination directory. |
test-compile |
compile the test source code into the test destination directory |
test |
run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed. |
package |
take the compiled code and package it in its distributable format, such as a JAR. |
pre-integration-test |
perform actions required before integration tests are executed. This may involve things such as setting up the required environment. |
integration-test |
process and deploy the package if necessary into an environment where integration tests can be run. |
post-integration-test |
perform actions required after integration tests have been executed. This may including cleaning up the environment. |
verify |
run any checks to verify the package is valid and meets quality criteria. |
install |
install the package into the local repository, for use as a dependency in other projects locally. |
deploy |
done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. |
因此,当我们构建一个项目时,只需要了解自己希望做什么,然后执行以上对应的生命周期即可。
例如,我们希望编译我们的工程。在命令行状态下进入到工程的pom.xml 文件所在的目录中,使用命令:mvn compile ;希望构建打包我们的工程,使用mvn package 即可。
当然了,maven 的构建生命周期也是可以扩展和自定义的,这里就先不做介绍了。
-
pom.xml 的介绍
pom.xml 包含了一个项目的项目对象模型(POM )。项目对象模型(POM )是Maven 工作的基本单元。请记住,这个是非常重要的,因为POM 包含了工程的非常重要的信息块,并且基本上包含了和项目相关的任何要素。
让我们熟悉一下pom.xml 包含的基本项:
-
poject 这是pom.xml 的顶级元素。
-
modelVersion 这是元素指出了这个POM 使用的是那个版本的对象模型。这个模型的版本自身么是经常改变的,但这种改变是为了使模型更加的稳定。
-
groupId 这个元素指出创建这个工程的组织或团队的唯一标识,并且这个也是一个项目的关键标识,推荐使用这个组织或团队的完整域名。例如:org.apache.maven.plugins 是为Maven plug-ins 定义的groupId 。
-
artifactId 这个元素指出这个工程的主要制品的基本名称。一个工程的主要制品如果是jar 文件,次要制品如果是源码包,则次要制品的名称的一部分也使用artifactId 。典型的制品名称使用这样的格式:<artifactId>-<version>.<extension>( 例如,myapp-1.0.jar) 。
-
packaging 这个元素指出制品的类型(例如:JAR ,WAR ,EAR 等等)。这个元素不仅仅指示出制品的类型,同时也指示出工程构建过程中的部分生命周期。Packaging 的默认值是JAR 。
-
version 这个元素指出这个项目产生的制品的版本号,Maven 在帮助开发人员管理版本号时走了很长的路,以后你将经常看到SNAPSHOT 在一个版本中,这个表示一个工程仍然在开发状态。
-
name 这个元素指出这个工程显示的名称。这个常用于Maven 产生的文档中。
-
url 这个员算指出在哪里能发现工程的站点。这个常用于Maven 产生的文档中。
-
desription 这个元素提供了这个工程基本的描述。这个也常用于Maven 产生的文档中。
以上只是 pom.xml 中的一些基本项,完整的 pom.xml 的元素介绍请参考:
http://maven.apache.org/maven-model/maven.html
文档编制
-
文档创建:
对于如何创建和编制文档,maven 有一个简单的示例命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-site |
执行了以上命令后,我们将得到这样一个目录结构:
my-app |-- pom.xml `-- src |-- site |-- apt | |-- format.apt | `-- index.apt |-- fml | `-- faq.fml |-- fr | |-- apt | | |-- format.apt | | `-- index.apt | |-- fml | | `-- faq.fml | `-- xdoc | `-- xdoc.xml |-- site.xml |-- site_fr.xml `-- xdoc `-- xdoc.xml |
你现在可以看到一个$basedir/src/site 目录,以及它包含的一些站点描述文件( site.xml,site_fr_xml ),和各种 maven 支持的文档格式相对应的目录和示例文档都已经产生。
以上的创建只是示例,我们自己创建时就没有命令行使用了,只能按照上面的目录结构创建我们需要的文档,并在文档中写入我们工程的信息。
让我们再来看看 maven 所支持的文档格式。
-
文档格式:
Maven 支持 3 种文档格式:
-
Xdoc format
这 个是一种简单快捷的,基于original Anakia format 的文件格式。
-
APT format
“Almost Plain Text”, (接近普通文本格式),这是一种允许你采用接近普通文本格式的方式简单的写出类似于 wiki 格式的结构性文档。
如果你对此很感兴趣,请参考完整的 APT format 的书写规范
http://maven.apache.org/guides/mini/guide-apt-format.html
-
FML formate
这个是一种FAQ 结构形式的文档格式。
了解了以上的文档格式,我们就可以按照以上文档格式的要求,选用我们喜欢的文档格式编写我们的文档。当编写完成后,我们需要生成所有文档。这里生成文档,maven 的处理是生成站点(site ),也就是身成html 页面,这样所有对此项目感兴趣的人员都可以通过访问此站点来了解所有的信息。生成站点的命令是:
mvn site |
-
文档国际化:
当然,你可能早就想到文档国际化的问题,这里maven 也早就处理了。在pom.xml 中
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <configuration> <locales>en,fr</locales> </configuration> </plugin> </plugins> ... |
注意到<locales>en,fr</locales> 了吗?这里就支持了英语( en )和法语( fr )两种语言的文档。请注意以下生成的目录,由于英语是在第一个,属于默认语言,所以 $basedir/src/site 目录下并没有 en 的文件夹,而有 fr 的文件夹,而且这个文件夹里包含了 maven 支持的文档格式相对应的目录和示例文档。
报告设置
Maven 有多个报告能添加在你的文档站点中,来显示项目当前的状态,这些报告采用插件的形式可在项目中配置。
为了为你的文档站点增加这些报告,必须增加reporting 部分在pom.xml 中,下面这个为标准的项目信息报告插件在pom.xml 中的配置。
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </plugin> </plugins> </reporting> ... |
Maven 在执行mvn site 命令时,除了产生开发人员编制的文档信息外,根据pom.xml 中设置的报告,会同时生成这个项目信息的报告文档。并且这个是默认的生成项。
这个默认的生成项将根据项目的信息生成以下报告:
-
持续集成信息(Continuous Integration )
-
依赖性信息(Dependencies )
-
发布追踪信息(Issue Tracking )
-
邮件列表信息(Mailing Lists )
-
工程协议信息(Project License )
-
项目团队信息(Project Team )
-
源码库信息(Source Repository )
根据笔者测试,以上信息均是在pom.xml 进行设置的。
-
持续集成信息根据以下配置信息生成:
<ciManagement>
<system/>
<url/>
<notifiers>
<notifier>
<type/>
<sendOnError/>
<sendOnFailure/>
<sendOnSuccess/>
<sendOnWarning/>
<address/>
<configuration/>
</notifier>
</notifiers>
</ciManagement>
-
依赖性信息根据以下配置信息有关
<dependencies> <dependency> <groupId/> <artifactId/> <version/> <type/> <classifier/> <scope/> <systemPath/> <exclusions> <exclusion> <artifactId/> <groupId/> </exclusion> </exclusions> <optional/> </dependency> </dependencies> |
-
发布追踪信息
<issueManagement> <system/> <url/> </issueManagement> |
-
邮件列表信息
<mailingLists> <mailingList> <name/> <subscribe/> <unsubscribe/> <post/> <archive/> <otherArchives/> </mailingList> </mailingLists> |
笔者在pom.xml 中设置以上信息后,运行mvn site 总会报错。如果哪位了解到报错原因请告诉我,谢谢。zhangxl@sintal.cn
-
工程协议信息
<licenses> <license> <name/> <url/> <distribution/> <comments/> </license> </licenses> |
-
项目团队信息
<organization> <name/> <url/> </organization> |
<developers> <developer> <id/> <name/> <email/> <url/> <organization/> <organizationUrl/> <roles/> <timezone/> <properties/> </developer> </developers>
|
<contributors> <contributor> <name/> <email/> <url/> <organization/> <organizationUrl/> <roles/> <timezone/> <properties/> </contributor> </contributors> |
-
源码库信息
<scm> <connection/> <developerConnection/> <tag/> <url/> </scm> |
默认情况下这些文档将生成在$basedir/src/site 目录下。
需要得到其他的报告,则需要配置其他的报告插件。
要想了解更多的信息,请参考以下网页:
http://cvs.peopleware.be/training/maven/maven2/morePlugins.html
依赖管理
这里我们通过使用外部依赖(external dependencies )来大家对maven 的依赖管理有一个简单而具体的了解。
当我们在做一个工程的时候,不可能一切都是从空白开始,对于我们做Web 应用的来说,使用框架已经司空见惯,而这种对框架的引入使用对于Maven 来说,就是工程的依赖。而我们的工程要进行测试,则不能少了对Junit 框架的依赖。
依赖管理是maven 的一个主要特征,这个是对于用户来说,是Maven 令人振奋的一个最著名的特征。对于一个单一的工程来说,依赖管理没有什么困难的,但是当你开始处理多个模块的工程或由10 多个甚至上百个模块组成的应用程序时, Maven 能帮助你轻松稳定的控制这些大量的依赖。
在pom.xml 中dependencies 部分列出了所有外部依赖,详细描述了在编译时,测试时,运行时是否需要这个依赖。现在,假定我们的工程只有对Junit 的依赖。它的pom.xml 文件可能如下:
<project xmlns="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>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project> |
从以上pom.xml 文件可以看出,定义一个外部依赖(external dependencies )至少需要4 个元素:groupId, artifactId, version, and scope 。对于groupId, artifactId, version 的意思,和前面我们在创建工程时提到的这几个元素的意义相同,这里就不再重复介绍,scope 元素指出你的工程如何使用依赖,并且它的值有compile ,test 和runtime 等等。想要了解更多的依赖说明的信息,请看
http://maven.apache.org/maven-model/maven.html
要想了解完整的依赖机制,请看
http://maven.apache.org/guides/introduction/introduction-to-dependency-management.html
有了这些依赖信息,Maven 将能在工程构建时引用依赖。
引用的过程是:
首先,在本地仓库(默认的本地仓库地址为:~/.m2/repository )中查找此依赖是否存在。
再次,如果在本地仓库中未发现,则在远程仓库中下载此依赖,并下载到本地仓库中。
最后,通过以上两个步骤就能找到依赖。如果远程仓库无法访问,则可以设置其他远程仓库。具体请看
http://maven.apache.org/guides/introduction/introduction-to-repositories.html
一个简单的例子。比如我们要添加一个log4j 到我们的工程中。
首先.需要了解log4j 的groupId, artifactId, and version 信息。可在google 上搜索“site:www.ibiblio.org maven2 log4j” 。这样在搜索结果里可以找到/maven2/log4j/log4j (or /pub/packages/maven2/log4j/log4j) 这样的目录,在这个目录中有一个文件叫做maven-metadata.xml 。这个文件内容如下所示:
<metadata> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.1.3</version> <versioning> <versions> <version>1.1.3</version> <version>1.2.4</version> <version>1.2.5</version> <version>1.2.6</version> <version>1.2.7</version> <version>1.2.8</version> <version>1.2.11</version> <version>1.2.9</version> <version>1.2.12</version> </versions> </versioning> </metadata> |
这样我们能找到groupId 为log4j ,artifactId 为log4j ,version 当然要用最新的,选择1.2.12 。scope 我们设置为compile 。
这样我们使用mvn compile 编译工程时,会看到mvn 下载了log4j 到我们的本地仓库。
配置管理
Maven 的配置管理是作为一个单独的Maven 子项目在做。叫做SCM 。他是这样介绍的:
MavenSCM 支持Maven 2.x 插件(例如,maven-release-plugin )和其他工具(例如,Continuum, 这个是一个和maven 2.x 结合很好的一个持续集成工具。),Maven SCM 提供给他们一个公共的API 去做配置管理的各种操作。当然了要执行配置管理操作,当然少不了配置滚里工具了。Maven SCM 给出了一个列表,说明Maven SCM 现在所支持的配置管理工具。
完全支持的配置管理工具 |
CVS Subversion Perforce StarTeam |
部分支持的配置管理工具 |
ClearCase File system Visual Source Safe |
不支持的配置管理工具 |
Accurev Aegis Arch BitKeeper ClearCase Multisite CM Synergy Code Co-op Darcs Monotone OpenCM PureCM Serena PVCS / Dimension Starteam Enterprise Svk Vesta |
当你选中了上面的一个配置管理工具,你就可以利用Maven 2.x 的插件或者集成管理工具进行配置管理了。
-
持续集成工具 continuum
continuum 是Maven 的一个子项目。他是一个构建基于java 的工程的持续集成服务器。他支持以下多种工程类型:
-
Maven 1
-
Maven 2
-
Ant
-
Shell scripts
continuum 有以下特征
-
紧密整合Maven 2.x
-
紧密整合Maven SCM
-
Subversion
-
CVS
-
Starteam
-
Clearcase
-
Perforce
-
-
更易用的基于网络的设置和界面
-
基于Quartz (Quartz-based )的时间计划表设置
-
添加新项目十分方便
-
邮件通知
-
其他IM 通知
-
IRC
-
Jabber
-
MSN
-
-
责备机制(Blame Mechanism )
-
下载:
在以下连接处下载此软件
http://maven.apache.org/continuum/download.html |
安装:
Windows 2000/XP
解压缩continuum-1.0.2-bin.zip 到你希望安装Continuum 1.0.2 的所在目录。这里假定你安装在C:/Program Files/Apache Software Foundation/continuum-1.0 下。
运行:
-
bin/linux/run.sh 如果是UNIX 平台
-
bin/solaris/run.sh 如果是Solaris 平台
-
bin/win32/run.bat 如果是Windows 平台
-
bin/macosx/run.sh 如果是MacOS X 平台.
-
bin/plexus.sh 如果是其他平台
当服务器启动成功后,打开浏览器访问:
http://localhost:8080/continuum/ |
注意: 由于continuum 判断一个工程是否构建成功,是使用一个命令行返回值。而windows 平台的用户,这个返回值有问题。因此需要修改以下maven 2 的bin/mvn.bat 文件。这里可以直接从以下地址下载修改后的文件替换掉即可。
http://maven.apache.org/continuum/scripts/mvn.bat |
-
添加一个项目到 continuum
要添加一个maven 2 的项目到continuum ,需要写入一个pom url 或者导入一个pom.xml ,当然导入的这个pom.xml 文件中包含了continuum 需要的各种信息。
我们来看看导入的pom.xml 文件中具体需要包含哪些项:
-
配置管理信息(The SCM information )
<scm> <connection/> <developerConnection/> <tag/> <url/> </scm> |
-
开发者信息(The developers )
<ciManagement> <system>continuum</system> <notifiers> <notifier> ... </notifier> </notifiers> </ciManagement> |
-
集成后所有的通知人信息(The notifiers )
<notifier> <type>mail</type> <configuration> <address>dev@maven.apache.org</address> </configuration> <notifier> |
<notifier> <type>irc</type> <configuration> <host>irc.codehaus.org</host> <port>6667</port> <channel>#maven</channel> </configuration> </notifier> |
-
构建工程
-
按照定制的时间构建
-
点击本项目上的build 按钮进行构建。
发布管理 Releases
-
发布配置方法
要发布(Releases )一个项目,需要在pom.xml 和setting.xml 中分别配置。
在pom.xml 中
<distributionManagement> <repository> <id>mycompany-repository</id> <name>MyCompany Repository</name> <url>scp://repository.mycompany.com/repository/maven2</url> </repository> </distributionManagement> |
在setting.xml 中
<settings> . . <servers> <server> <id>mycompany-repository</id> <username>jvanzyl</username> <!-- Default value is ~/.ssh/id_dsa --> <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa) <passphrase>my_key_passphrase</passphrase> </server> </servers> . . </settings> |
通过以上的设置,项目将可以发布到远程仓库,远程服务器。
项目发布现在支持scp ,ftp 和scpexe 等方式。
-
Setting.xml 文件
这个文件是一个maven 的配置文件。
他有下面的功能:
-
配置本地仓库
-
配置访问网络的代理服务器
-
安全和部署的设置。
-
为仓库设置景象
想要了解更多这个文件的信息可以参考一下以下文章:
http://maven.apache.org/guides/mini/guide-configuring-maven.html |
-
运行发布的命令
mvn deploy |
Maven 和 eclipse 工具的合作
当有了以上的工程目录,无论是webapp 工程,还是app ,我们都希望在集成开发环境中开发。Maven 如何和IDE 集成。现在我们就来进行讲解。
-
首先要让 eclipse 知道 Maven 2 的 repository (仓库)的路径。
因此要设置一个M2_REPO 的变量为classpath 。
可以使用命令行的方式来设置:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo |
还可以在eclipse 中定义一个新的classpath 变量通过在eclipse 的菜单上选择Window> Preferences. 选择Java > Build Path > Classpath Variables page.
-
生成 eclipse 的工程文件。
使用命令行
mvn eclipse:eclipse |
这样通过在eclipse 的菜单上选择File >Import >Existing Projects into Workspace ,就可以将工程导入eclipse 中。
通过以上2 个步骤,我们就可以利用eclipse 来进行开发工作了。
-
Eclipse 插件 mavenide
同时在eclipse 中我们可以下载一个maven 的插件,用来辅助eclipse 进行maven 工程的开发工作。这个插件名称叫做mavenide 。
这个插件可使用以下更新站点:http://m2eclipse.codehaus.org/
并且非常方便的是,这里还提供了一个flash 的演示来介绍如何安装此插件,这个flash 演示的观看地址在:
http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html
要正常使用此插件请注意以下问题:
eclipse 使用3.1 或以上版本。
Mavenide 的插件为0.0.5 不要安装错误了。
通过笔者在安装好此插件的一些使用后,看到了此插件的以下一些特性。
-
可以方便的添加依赖。
-
在编辑完pom.xml 文档后,会自动检查此文档的格式是否正确。
-
可以将mvn 的一些命令通过扩展工具的方式在eclipse 中轻松执行。
文章来自:http://blog.csdn.net/srx/article/details/666204
发表评论
-
SVN冲突解决图解
2012-07-27 14:33 813SVN冲突解决图解 ... -
(图)Eclipse优化
2012-07-20 17:35 6221. 2. 3. ... -
Eclipse优化
2012-07-20 17:35 907减少Eclipse启动后自动启动的插件 具体 ... -
Errors occurred during the build
2012-07-10 14:44 1411问题:每次保存时,总出现下面的图 解决方案: 选 ... -
Eclipse卸载插件
2012-06-19 14:54 939最近ADT更新到了18.0.0,Eclipse中的Androi ... -
windows 中 Eclipse 打开当前文件所在文件夹
2012-06-19 10:28 739默认情况下使用eclipse打开当前文件所在文件夹很麻烦,需要 ...
相关推荐
如果使用Maven或Gradle构建系统,可以在pom.xml或build.gradle文件中添加对应的依赖配置。 3. **服务端程序** 使用Mina创建服务端程序,需要实现一个Acceptor,它是监听特定端口并处理客户端连接的组件。通过...
### Struts2.0 学习笔记 #### 引言 Struts2 是一款非常流行的 Java Web 开发框架,它基于 Struts1 进行了重大的改进与优化,不仅继承了 Struts1 的优秀特性,还在此基础上进行了扩展,支持更加丰富的功能,如拦截...
如果是Maven项目,可以在pom.xml文件中添加相应的依赖项,以便自动管理Mina的依赖。 3. **服务端程序** Mina服务端程序的核心是IoAcceptor,它负责监听和接受来自客户端的连接。通过实现IoHandler接口并注册到...
对于Maven项目,可以在pom.xml中添加对应的依赖配置。 3. **服务端程序**:服务端程序是使用Mina建立的服务器,它监听特定端口,接收客户端连接并处理数据。服务端通常会创建一个`IoAcceptor`实例,注册监听器并...
这可以通过IDE(如Eclipse或IntelliJ IDEA)的依赖管理功能完成,或者手动编辑项目的build文件(如Maven的pom.xml或Gradle的build.gradle)。 3. **服务端程序** Mina服务端的核心是`IoAcceptor`,它负责监听和...
Apache Mina2.0为开发者提供了构建高效网络应用的工具,通过异步API和事件驱动模型简化了NIO的编程。了解并掌握Mina的基础知识,如IoService和IoFilter,对于构建健壮的网络服务至关重要。通过实践,开发者可以灵活...
### Maven 学习笔记 #### Maven 安装与配置 Maven 是一款强大的自动化构建工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。要开始使用 Maven,首先需要完成其安装与基本配置。 ##### Maven 安装步骤: ...
Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的开源项目,主要用于构建MVC...通过学习Struts2.0,开发者可以构建出结构清晰、易于维护的Web应用,同时也能提升对Java Web开发的整体理解。
AppFuse 2.0 是对 1.0 版本的重大重构,引入了 Maven 2.0 作为构建工具,这使得依赖管理更加便捷,提高了项目的可维护性,同时也便于用户进行版本升级。此外,AppFuse 2.0 采用了 JDK 1.5,支持 Annotation 和 JSP ...
3. **版本管理**: Maven支持版本范围,如`[1.0,2.0)`表示1.0到2.0(不包含2.0)之间的版本。 **八、插件管理** 1. 插件使用: 通过`<build><plugins>`配置插件及其参数。 2. 插件绑定: 可以将插件绑定到生命周期的...
### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...
### Appfuse 学习笔记 #### 一、Appfuse 简介 Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是...
这是一个关于使用SSM(Spring、SpringMVC、MyBatis)框架开发的云学习笔记系统的项目,结合了Java后端技术和微信小程序的前端应用。在这个项目中,开发者可能已经实现了一个功能完备、易于使用的在线学习笔记平台。...
**JBPM4学习笔记概述** JBPM(JBoss Business Process Management)是一款开源的工作流程管理系统,主要专注于业务流程的建模、执行和监控。JBPM4是JBPM的第四个主要版本,它提供了一整套工具和服务,使得企业能够...
有大量简单的 API 用来快速地构建代码优先的 Services,各种 Maven 的插件也使集成更加容易,支持 JAX-WS API ,支持 Spring 2.0 更加简化的 XML 配置方式,等等。支持二进制和遗留协议:CXF 的设计是一种可插拨的...
在本篇学习笔记中,我们将聚焦于环境搭建和创建第一个"Hello, World!"程序。 首先,要开始学习Struts2,你需要确保你的开发环境中已经安装了以下基本组件: 1. **Java Development Kit (JDK)**:Struts2依赖于Java...
超详细的Spring Boot入门笔记(总结) Spring Boot是Spring社区较新的一个项目,旨在帮助开发者更容易地创建基于Spring的应用程序和服务,让更多人的人更快地对Spring进行入门体验,让Java开发也能够实现Ruby on ...