- 浏览: 592698 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
18335864773:
用 pageoffice 吧. http://www.zhuo ...
使用Jacob输出word文档 -
dick1305:
很好,谢谢分享。
XFire创建WebService实例 -
wd530141534:
<c:if test="${ReleaseRe ...
Axis2创建WebService实例 -
wd530141534:
if(result != null && re ...
Axis2创建WebService实例 -
wd530141534:
String printerIp = req.getRemot ...
Axis2创建WebService实例
(1)创建一个maven项目
mvn archetype:create
-DgroupId=org.sonatype.mavenbook.ch03
-DartifactId=simple
-DpackageName=org.sonatype.mavenbook
相关解释说明
mvn archetype:create 通过archetype插件快速创建一个项目
-Dname=value 这样的对是将会被传到目标中的参数,java用来设置系统属性的方式
artifactId 项目的基础目录(simple)
simple项目下的pom.xml文件 描述了项目,配置了插件,声明了依赖
src/main/java java类文件
src/main/resources classpath资源文件
src/test/java 测试java类文件
src/test/resources 测试classpath资源文件
(2)构建并打包项目(在包含pom.xml文件下运行)
mvn install
运行后在target目录下生成simple-1.0-SNAPSHOT.jar文件(名称根据pom.xml文件配置得来),
并安装到我们的本地maven仓库。
(3)maven的pom.xml文件说明:
<groupId>org.sonatype.maven.test</groupId> <artifactId>simple</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
以上四个元素是maven的坐标,唯一标识了一个项目。
<name>simple</name> <url>http://maven.apache.org</url>
以上二个元素是pom提供的描述性元素,给人提供可阅读的名字。
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
<dependencies>元素定义了项目的相关依赖,
<scope>元素为test,说明只有在运行compiler:testCompile和surefire:test时才会被加到classpath中。
<scope>元素如果为provided,则依赖在编译的时候需要,但是不应该被捆绑在构建的输出中。
在开发web应用时很有用。
maven支持传递性依赖,会隐式地把相关依赖间接依赖的包也加到项目中。
(4)验证程序是否工作(java -cp 指定类运行所依赖其他类的路径,多个依赖包用;隔开)
java -cp target/simple-1.0-SNAPSHOT.jar org.sonatype.maven.App
(5)-查看有效的(effective)pom,即maven真正运行根据的pom
mvn help:effective-pom (在项目的基础目录下simple运行)
(6)maven项目打包
mvn package 运行到打包为止的所有阶段,包含以下一系列插件目标
mvn resources:resources
compiler:compile
resources:testResources
compiler:testCompile
surefire:test
jar:jar
(7)浏览maven中央仓库
http://repo2.maven.org/maven2
maven仓库的目录存储格式
<groupId> / <artifactId> / <version> / <artifactId>-<version>.<packaging>
(8)生成站点文档和报告
mvn site (生成文档目录在target/site目录下)
(9)查看相关依赖的groupId和artifactId
http://mvnrepository.com/ (搜索依赖可查看pom.xml文件中的依赖元素)
(10)浏览项目的相关依赖(打印出已解决依赖的列表)
1.mvn dependency:resolve(在项目目录下执行)
2.mvn dependency:tree (浏览项目的整个依赖树,包含间接依赖)
(11)执行单元测试
mvn test
1.忽略单元测试失败,需要设置Surefire的testFailureIgnore的属性为true
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true<testFailureIgnore> </configuration> <plugin> </plugins> </build>
2.跳过单元测试,需要设置Surefire的skip的属性为true
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
(12)创建Maven的Web应用(需指定archetypeArtifactId为maven-archetype-webapp,打包成war)
mvn archetype:create
-DgroupId=org.sonatype.mavenbook.ch05
-DartifactId=simple-webapp
-DpackageName=org.sonatype.mavenbook
-DarchetypeArtifactId=maven-archetype-webapp
打包的War文件默认名称为<artifactId>-<version>.war
如果定义了finalName,则包名为<finalName>.war.
如:<finalName>simple-webapp</finalName>
(13)配置Maven Jetty插件
1.在pom.xml文件中配置
<build> <finalName>simple-webapp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> </plugins> </build>
2.启动Web项目(调用Jetty插件的run目标)
mvn jetty:run
启动完后就可以通过(http://localhost:8080/simple-webapp/)访问。
(14)Pom相关
1.asm包(字节码操作)依赖包如果版本不一致,则项目会出问题。
2.所有的pom文件都从超级pom继承,超级pom存放于
{M2_HOME}\lib\maven-2.2.1-uber.jar\org\apache\maven\project
3.查看项目的有效POM,超级POM和项目POM的合并(打印出XML文档)
mvn help:effective-pom
4.版本号格式(例:1.3.5, 1.3-beta-01)
<主版本>.<次版本>.<增量版本>-<限定版本>
5.pom的属性引用(${})
例:${project.groupId}-${project.artifactId}
maven提供了三个隐式的变量
1.env 例:${env.PATH},暴露了操作系统,访问系统的环境变量
2.project 例:${project.groupId},暴露了POM,访问POM的信息。
3.settings 例:${settings.offline},暴露了Maven Settings的信息,
引用settings.xml文件中offline元素的值。
(15)项目依赖的依赖范围
1.compile(编译范围),默认的范围,在所有的classpath中可用,同时也会被打包。
2.provided(已提供范围),只有在容器提供该依赖后才可使用,在编译时可用,但不会被打包。(例:Servlet Api)
3.runtime(运行时范围),只有在运行和测试系统时需要,编译时不需要。(例:JDBC驱动)
4.test(测试范围),只有在测试编译和测试运行阶段可用,编译和运行时不需要。
5.system(系统范围),与provided类似,必须显示的提供一个对于本地系统中JAR文件的路径。不推荐使用。
6.使用依赖的多个版本
(,) 不包含量词
[,] 包含量词
例:<version>[3.8,4.0]</version> 依赖于3.8-4.0之间的版本
<version>[,3.8.1]</version> 依赖于<=3.8.1的版本
7排除传递性依赖(配置exclusions元素)
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> </exclusions> </dependency>
8.统一依赖版本号
在子项目中引用依赖而不用显示的列出版本号(dependencyManagement元素),
版本升级时不用手工的一个个修改依赖的pom.xml文件。
<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.2</version> </dependency> </dependencies> </dependencyManagement>
在子项目中引用依赖,不用指定版本号
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
如果子项目中指定了版本,将覆盖顶层POM的dependencyManagement元素的版本号。
9.多模块项目管理
将很多项目归类在一起,成为一个构建,打包类型总是POM.
<modules> <module>sub-gooup-a</module> <module>sub-gooup-b</module> </modules>
10.项目继承(当一个项目声明一个parent的时候,它从父项目的POM中继承信息)
<parent> <groupId>com.training.killerapp</groupId> <artifactId>a-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent>
(16).maven生命周期
(1)清理生命周期(删除整个构建目录,target目录)
mvn clean
(2)默认生命周期阶段
1.validate 验证项目是否正确
2.generate-sources 生成所有需要包含在编译过程中的源代码
3.process-sources 处理源代码,比如过滤一些值。
4.generate-resources 生成所有需要包含在打包过程中的资源文件
5.process-resources 复制并处理资源文件至目标目录,准备打包
6.compile 编译项目的源代码
7.process-classes 后处理编译生成的文件,例如对Java类进行字节码增强
8.generate-test-sources 生成所有包含在测试编译过程中的测试源码
9.process-test-sources 处理测试源码,比如过滤一些值
10.generate-test-resources 生成测试需要的资源文件
11.process-test-resources 复制并处理测试资源文件至测试目标目录
12.test-compile 编译测试源码至目标目录
13.test 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
14.prepare-package 在真正的打包之前,执行一些准备打包必要的操作。
这通常会产生一个包的展开的处理过的版本
15.package 将编译好的代码打包成可分发的格式 ,如JAR,WAR,或者EAR
16.pre-integration-test 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
17.integration-test 如果有必要的话,处理包并发布至集成测试可以运行的环境
18.post-integration-test 执行一些在集成测试运行之后需要的动作。如清理集成测试环境
19.verify 执行所有检查,验证包是有效的,符合质量规范
20.install 安装包至本地仓库,以备本地的其它项目作为依赖使用
21.deploy 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
(17).过滤资源,替换属性
默认的Maven行为会跳过过滤,只是将资源复制到输出目录。需显示地配置资源过滤
<build> <filters> <filter>src/main/filters/default.properties</filter> </filters> <rosources> <directory>src/main/resources</directory> <filtering>true</filtering> </resources> </build>
(18).使用Maven Profile覆盖Compiler插件配置
<profiles> <profile> <id>production</id> <build> <plugins> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <debug>false</debug> <optimize>true</optimize> </configuration> </plugin> </plugins> </build> </profile> </profiles>
1.profiles通常是pom.xml中最后一个元素
2.每个profile必须要有一个id元素,通过传给Maven一个-P<profile_id>参数来调用profile.
3.一个profile元素可以包含很多其它元素,只要这些元素可以出现在pom.xml文件的project元素下。
4.mvn clean install -Pproduction -X (-X为开启调试输出)
(19).使用profile激活动态包含子模块
<profiles> <profile> <id>jdk16</id> <activation> <jdk>1.6</jdk> </activation> <modules> <module>simple-script</module> </modules> </profile> </profiles>
1.如果在jdk1.6下运行,则会构建simple-script项目,否则不会构建。
2.activation元素列出了所有激活profile需要的条件。
其它方式:通过属性缺失激活(!表示否定,当没有设置${environment.type}属性时被激活.
<activation> <property> <name>!environment.type</name> </property> </activation>
3.如果大量使用Maven Profile,可将profile从POM文件中分离,
使用一个单独文件,名字为profiles.xml,放到项目目录下(同pom.xml),格式为
<profiles> <profile> ... </profile> </profiles>
4.setting profile可以应用到所有使用到Maven构建的项目,可以在两个地方定义
(1).~/.m2/settings.xml(特定用户)
(2).${M2_HOME}/conf/settings.xml(全局)
5.列出活动的profile
mvn help:active-profiles
(20).创建私服
下载nexus(http://nexus.sonatype.org/downloads/)
解压后运行目录下\bin\jsw\windows-x86-32\Nexus.bat,
访问http://127.0.0.1:8081/nexus(默认admin,admin123)
1.配置maven settings
<mirrors> <mirror> <id>Nexus</id> <mirrorOf>central</mirrorOf> <name>Nexus Public Mirror</name> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror> </mirrors>
2.或者
<profiles> <profile> <id>artifactory</id> <repositories> <repository> <id>nexus</id> <name>local nexus</name> <url>http://localhost:8081/nexus/content/groups/public</url> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local nexus</name> <url>http://localhost:8081/nexus/content/groups/public</url> <layout>default</layout> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>artifactory</activeProfile> </activeProfiles>
3. 或者在项目pom.xml中加入
<repositories> <repository> <id>nexus</id> <name>local nexus</name> <url>http://localhost:8081/nexus/content/groups/public</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local nexus</name> <url>http://localhost:8081/nexus/content/groups/public</url> </pluginRepository> </pluginRepositories>
配置后maven会从本地的nexus安装查阅(可在Public Repositories和Maven Central仓库中查到)
(21)部署第三方构件到nexus
在nexus项目管理中
找到Repositories,这里选择其中一个,例如3rd party,
可以在下面看到一个Artifact Upload选项卡。
打开在GAV Definition中选择GAV Parameters,在接下来的Group中选输入组织名,
Artifact项输入artifactId ,Packaging:这里选择jar,
之后上传一个自定义的jar文件,
点击Add Artifact,Upload Artifact(s),上传成功后,
在上边的3rd party上单击右键——ReIndex,然后刷新下这个列表,
就可以看到下边多了.index文件夹和我们刚才上传相关的文件夹。
发表评论
-
JAVA多线程事例参考(二)
2013-05-10 16:15 1204一、JAVA多线程之Lock import j ... -
JAVA多线程事例参考(一)
2013-05-10 16:07 1411一. Java多线程安全问题,模拟银行存款 /** * ... -
JAVA之 IO流
2013-01-16 13:57 1608一、IO流流就是字节序列的抽象概念,能被连续读取数据的数 ... -
CXF创建WebService实例
2013-01-07 20:33 18133一、概述1、ApacheCXF项目是由ObjectWeb Ce ... -
JAVA编程指南
2012-12-27 22:57 1151一、设计方法论 1、 ... -
JAVA基础
2012-12-27 22:43 1346一、JAVA基础 1.类的构建过程是从基类“向外”扩散 ... -
Java类加载器入门应用
2012-03-08 22:40 24301、类加载器负责加载 Ja ... -
Java语言高级应用
2012-03-08 22:11 4319一、 Java反射1.Java反射 ... -
CAS单点登录应用
2012-02-15 17:33 2037一. 基础知识点1.CAS Se ... -
Freemarker模板应用
2012-01-11 17:13 43852FreeMarker是一个模板引擎,一个基于模板生成文 ... -
Velocity模板应用
2011-12-14 19:25 18101Velocity是一个基于java的模板引擎(模板引擎的作用就 ... -
XFire创建WebService实例
2011-11-16 13:58 62075XFire创建WebService实例应用 X ... -
Axis2创建WebService实例
2011-03-26 14:34 193391一、Axis2的下载和安装 1.可从http: ... -
Tomcat部署Web应用
2010-12-16 22:28 14981.利用Tomcat自动部署 将myWeb应用目录拷贝 ... -
Tomcat数据源配置
2010-12-16 21:32 1324一、 Tomcat5.0.X数据源配置,修改${tomca ...
相关推荐
### Maven使用小结 #### Maven简介 Maven是一款由Apache基金会提供的开源项目管理和构建工具,其设计理念基于项目对象模型(Project Object Model, POM)。通过一个中心信息片(即POM文件),Maven能够实现对项目...
### Maven使用总结 #### 一、项目框架技术 在电商项目的构建过程中,Maven作为核心构建工具发挥着重要作用。为了确保项目的高效运行和良好的用户体验,采用了一整套成熟的技术栈。 **前台技术栈:** - **前端:**...
Maven是一个强大的项目构建工具,主要用于Java项目,同时也支持C#,它通过XML格式的POM(Project Object Model)文件来管理项目的依赖、构建过程和配置。Maven简化了项目的搭建和打包工作,通过自动化构建流程,使得...
- `PATH`:添加 `%MAVEN_HOME%\bin` 到系统路径中,使得可以在命令行中直接使用Maven命令。 - **设置settings.xml**:这是Maven的重要配置文件,位于 `$MAVEN_HOME\conf\settings.xml`,用于指定本地仓库位置等信息...
**Maven 使用指南** Maven 是一个强大的项目管理和构建工具,尤其在Java开发领域中广泛使用。它通过统一的构建过程和项目配置,使得开发者能够更有效地管理依赖、构建工件以及执行各种生命周期阶段。 ### Maven 的...
总结,Maven 3.3.9 是一个强大且稳定的项目管理工具,尤其在SpringBoot这样的现代Java框架中,能够显著提高开发效率和项目的可维护性。通过熟练掌握Maven的使用,开发者可以更加专注于业务逻辑的实现,而不是项目的...
5. **支持Java 9**: Maven 3.5.2兼容Java 9,允许开发者在新的JDK环境下使用Maven。 **Maven 的使用流程** 1. **创建项目**: 使用`mvn archetype:generate`命令可以快速创建一个基于模板的新项目。 2. **编辑POM*...
### Maven安装和使用详解 #### 一、Maven概述 Maven是一款强大的开源项目管理和构建工具,由Apache软件基金会维护。Maven适用于基于Java平台的项目管理,支持从小型开源库到大型企业级应用程序的构建需求。无论是...
Maven作为Java领域广泛使用的构建工具,提供了强大的支持来管理多模块项目。本文将深入探讨如何利用Maven构建多模块项目,以及在实际操作中需要注意的关键点。 1. Maven多模块项目结构: Maven多模块项目通常遵循...
### Maven知识总结 #### 一、Ant与Maven概述 - **Ant** 和 **Maven** 均为项目的构建工具,在软件开发过程中扮演着重要角色。Ant 是一个早期的构建工具,它提供了灵活的XML配置文件来描述构建流程,但缺乏高级特性...
总结来说,通过Eclipse集成Maven,开发者能够在一个统一的环境中完成项目的构建、管理和调试,提高了开发效率。理解并掌握Eclipse中Maven的安装、配置及m2eclipse插件的使用,是每个Java开发者的必备技能。
总结来说,Maven API是构建Java项目的关键工具,通过其丰富的功能和强大的插件系统,可以高效地管理项目构建、依赖和生命周期。了解并熟练使用Maven API,对于提升开发效率和团队协作具有重要意义。
3. **坐标**: Maven使用一组独特的标识来唯一确定一个项目,包括groupId、artifactId和version,这被称为项目的坐标。 4. **生命周期 (Lifecycle)**: Maven拥有一个预定义的构建生命周期,包括clean、default和site...
Maven使用一个统一的项目对象模型(Project Object Model,POM),使得项目的配置信息标准化,便于自动化构建流程。 ** Maven 3.6.1 版本 ** Maven 3.6.1是Maven的一个稳定版本,发布于2019年。这个版本包含了一些...
maven知识的一些个人梳理,涉及到了Maven的生命周期和命令之类的。
【标题】:“nexus构建maven仓库总结(完善版2)” 在软件开发过程中,管理依赖库是一项重要的任务,而Nexus作为一个强大的仓库管理器,能够有效地帮助我们完成这一任务。Nexus不仅可以作为代理服务器缓存远程Maven...
在Java开发中,Maven通过使用一个统一的构建生命周期和约定优于配置的原则,极大地简化了项目构建过程。它通过XML格式的pom.xml文件来描述项目信息,包括项目依赖、构建目标、插件配置等。这个文件是Maven的核心,它...
git maven bamboo 总结命令与使用讲解 很详细 如果下载后还不能满足你 有问题 欢迎探讨