maven 的使用
mvn将项目分为5个阶段(lifecycle):准备、编译(complie)、测试、部署、运行
下载配置maven:
详细过程网上都会有。
1.1 user
对指定用户的配置。user configuration可以在${user.home}/.m2/settings.xml中指定。注:该文件不是必须的,当该文件找不到时,maven会使用默认的配置。
关于该文件的具体配置可以参考:http://maven.apache.org/ref/2.0.4/maven-settings/settings.html
1.2 配置代理
在maven2.0中,代理服务器上网,可以为http request配置代理。同样在user configuration中配置,配置如下:
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>www.hc360.com</host>
<port>80</port>
<nonProxyHosts>local.net,some.host.com</nonProxyHosts>
</proxy>
详见:http://maven.apache.org/guides/mini/guide-proxies.html
1.3 安全和部署配置
在一个project中,该项目将要使用哪个Repository,是在setting.xml中指定的。然而,你却不能将用户名和
码以及其它的安全设定也放在该project中。因此,你可能会在你自己的设定中定义一个server,给它指定一个id, 该id
与project将要使用那个Repository相对应。
另外,有些repository在下载时可能需要用户名和密码,这些也可以在server element中以相同的方式指定。配置如下
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
1.4 mavenplugins for eclipse
通过eclipse安装的url为http://m2eclipse.sonatype.org/update/ ,可以去官方网站上查询。
配置:在window-->references-->Java-->build path-->classpath variables,按"New",名字为:M2_REPO 创建一个目录,指向当前的资源库:C:/Documents and Settings/pengch/.m2/repository
要注意的部分:设置maven的主目录的名称为:M2_HOME。从服务器下载的jar库默认是: ${user.home}/.m2/repository/下,我的${user.home}值为:C:/Documents and Settings/Administrator,初始配置是在:%M2_HOME%/bin/m2.conf文件中可见到。如果要修改resposity的值:
有两种方法:%M2_HOME%/conf/settings.xml中的字段为:<localRepository>实际的物理地址</localRepository>,如<localRepository>E:/maven/.m2/repository</localRepository>
另一种方法是:用artifactory来建立maven的本地的repository。本人没有试用过。(以下转自:http://www.javaeye.com/topic/98480)
官方的maven repository服务器特别的慢,还记得上次海底电缆事故么?官方的服务器根本就无法访问,那段时间简直要抓狂。并且官方服务器类库版本通常不是最新,有时候想用最新版的还得自己动手。(下面会介绍如何自己动手做),所以建立一个自己的本地代码服务器对于整个团队就特别有意义。
Maven的服务器很简单,一个普通的http服务器就行,比如apache,装好apache以后。
将你本地代码库文件夹拷贝到apache安装目录下htpdocs/maven2,windows用户是C:/Documents and Settings/jeffrey/.m2/repository,linux下是 /home/Jeffrey/.m2/repository(注意.m2在linux下是隐藏文件夹)
启动apache服务器,在浏览器中输入http://localhost/maven2/repository,应该可以查看到repository的文件目录
编辑项目pom,指定本地的代码库服务器
在project中加入:
xml 代码
- <repositories>
- <repository>
- <id>mylibsid>
- <url>http://localhost/maven2/repositoryurl>
- repository>
- repositories>
可以加入多个repository,mvn会按照顺序检索,如果都没有找到,最后会去找官方的服务器。(转完)
maven 常用命令组合:
创建:mvn archetype:create -DgroupId=com.oreilly -DartifactId=app
文件夹结构:
app
---com
------oreilly
创建Maven的普通java项目:mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=pjoName
创建Maven的Web项目:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
编译:
cd app;
mvn compile
编译测试用例:Compiling Test Sources and Running Unit Tests
mvn test;
mvn test will always run the compile and test-compile phases first, as well as all the others defined before it.
打包,
Packaging and Installation to Your Local Repository
Making a JAR file is straightforward and can be accomplished by executing the following command:
C:/app> mvn package
将生成的文件添加到本地类库中
Now, you'll want to install the artifact (the JAR file) you've generated into your local repository. It can then be used by other projects as a dependency. The directory <user_home>/.m2/repository isthe default location of the repository.
To install, execute the following command:
C:/app> mvn install
maven代码库的文件目录组织方式,同一个jar对于每个版本都有一个独立的文件夹来存放,除了jar还要有该jar的描述文件.pom,以及他们的校验文件.sh1
.pom文件里定义了该jar的名称、版本以及该jar所依赖到的其他jar(这也就是为什么引入一个jar却带出一大堆的jar来)
最简单的pom如下:
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <project>
- <modelVersion>4.0.0modelVersion>
- <groupId>net.jeffreygroupId>
- <artifactId>xxxartifactId>
- <version>1.0version>
- <dependencies>
- dependencies>
- project>
为jar和pom生成校验文件
可以通过一个ant任务来做:
xml 代码
- <target name="checksum" description="Generate checksum file for jar and pom">
- <checksum algorithm="SHA" fileext=".sha1">
- <fileset dir="d:/javalib" id="id">
- <include name="**/*.pom" />
- <include name="**/*.jar" />
- <include name="**/*.xml" />
- <exclude name="**/*.sh1" />
- </fileset>
- </checksum>
- </target>
把生成好的sh1文件和jar、pom按照前面介绍的结构布局拷贝到apache的代码库中,当然你也可以直接拷到本地代码库中。
(转自:http://fluagen.blog.51cto.com/146595/40086)
在安装hibernate的架包时告诉我jta无法下载。要求本地化安装,给出的提示如下:
1) javax.transaction:jta:jar:1.0.1B
Try downloading the file manually from:http://java.sun.com/products/jta.Then, install it using the command:
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta / -Dversion=1.0.1B -Dpackaging=jar -Dfile=/path/to/filePath to dependency:
1) com.efn:mywebapp:war:1.0-SNAPSHOT
2) org.hibernate:hibernate:jar:3.1rc2
3) javax.transaction:jta:jar:1.0.1B
----------
1 required artifact is missing.for artifact: com.efn:mywebapp-1.0-SNAPSHOT.war这个提示是说可以先到sun的网站下载jta架包,然后采用命令行的方式按要求安装,因为我本来就有此架包,于是拷到一个方便的位置,比如c:/,然后在命令行下输入:
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=C:/jta.jar
执行完毕后,一切OK!
(转完)
其他命令:
不需任何附加工作maven依靠此POM就可以为你的项目产生一个网站,你只须定制你的maven网站,如果时间紧迫,你只须执行以下命令:
mvn site |
还有许多goals可以执行,比如
mvn clean |
此命令删除target目录。
可能你需要为你的项目产生一个IntelliJ IDEA 描述符,执行以下命令:
mvn idea:idea |
组合使用goal命令,如只打包不测试:mvn -Dtest package
编译测试的内容:mvn test-compile
只打jar包: mvn jar:jar
只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile (这里要特别注意 -skipping 的灵活运用,当然也可以用于其他组合命令)
清除eclipse的一些系统设置:mvn eclipse:clean
注意事项:
当建立一个工程后,执行 mvn eclipse:eclipse,则会产生eclipse的工程文件,但是第一次用eclipse打开工程后,发现报如下错误:Unbound classpath variable: 'M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar' in project my-webapp ,需要在Eclipse 中配置 M2_REPO 变量,配置步骤:window >> preferences >> Java >> Build Path >> Classpath Variables
新建一个 M2_REPO 的变量,变量值指向你系统的Maven2的数据仓库位置
将资源文件(.resources)加入
如何在jar文件中加入资源?
在示例应用程序中,增加目录${basedir}/src/main/resources,我们把资源文件放入此目录。任何在${basedir}/src/main/resources目录中的文件和目录都将被打包到jar文件中。
my-app |-- pom.xml `-- src |-- main | |-- java | | `-- com | | `-- mycompany | | `-- app | | `-- App.java | `-- resources | `-- META-INF | `-- application.properties `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java |
在这个例子中,我们在${basedir}/src/main/resources目录下放了一个META-INF目录并在META-INF目录中放了一个application.properties文件。如果你将jar文件解压,可以看到以下内容:
|-- META-INF | |-- MANIFEST.MF | |-- application.properties | `-- maven | `-- com.mycompany.app | `-- my-app | |-- pom.properties | `-- pom.xml `-- com `-- mycompany `-- app `-- App.class |
就像你看到的那样,${basedir}/src /main/resources中的内容在jar文件的起始位置,我们的application.properties文件在META-INF目录下。同 时,一些其他文件如META-INF/MANIFEST.MF,以及pom.xml和pom.properties文件也在其中,对于maven产生的 jar文件来说,这是maven的标准行为。你可以自行创建自己的manifest,不过如果你不指定,maven会产生一个默认的。由于pom.xml 和pom.properties文件都被打包到jar文件中,所以maven产生的产品都是自描述的,一个简单的应用就是获得应用程序版本。打开POM文 件可能需要一些maven的工具,但打开属性文件可以使用标准的java API来做到,属性文件pom.properties如下所示:
#Generated by Maven #Tue Oct 04 15:43:21 GMT-05:00 2005 version=1.0-SNAPSHOT groupId=com.mycompany.app artifactId=my-app |
为了单元测试,可能需要把资源加入到classpath,你可以遵照同样的模式:
my-app |-- pom.xml `-- src |-- main | |-- java | | `-- com | | `-- mycompany | | `-- app | | `-- App.java | `-- resources | `-- META-INF | |-- application.properties `-- test |-- java | `-- com | `-- mycompany | `-- app | `-- AppTest.java `-- resources `-- test.properties |
那么在测试代码中,只须使用如下代码就可访问这些资源:
...
// Retrieve resource
InputStream is = getClass().getResourceAsStream( "/test.properties" );
// Do something with the resource
maven 的使用相关推荐
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...
- IDEA中maven的命令及作用
maven中的Lifecycle中的那些按钮都有哪些,都有什么功能呢? validate:验证项目的正确性以及包含所有必要的信息 compile:编译源码 test:编译和运行测试代码 package ...
- 如果你没用过maven的install,你应该了解一下!maven中的install功能及用法。
maven中有一个大多数人都忽视或者没有用到过的一个功能--install,大多数java开发人员都了解maven,使用maven进行依赖管理.但使用的大多数功能不过是clean清理.compile编 ...
- 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别???? 首先,根本原因:这是因为你的pom.xml中的项 ...
- 手动将jar包导入pom依赖,让jar包适配本地maven项目
前言: Oracle对maven很久没有更新依赖,虽然19年更新了一版,但pom引入一直有错误. 我用的是oralce 12的依赖,虽然有jar包,但是依赖和pom没有适配,项目打包的时候还要去中央仓 ...
- pom文件中引入常用的maven仓库
给大家分享几个maven仓库,如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个.可以直接拖放在pom.xml中使用. 阿里云仓库 <mirrors><mirror>< ...
- Maven安装与配置(最实用!!!)eclipse中配置maven
Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...
最新文章
- r - 求平均成绩_学霸秘籍:小学数学知识点例题讲解 — 平均数问题
- 计算机无法搜索本地文件,电脑本地磁盘无法搜索文件。怎么处理?
- linux的模块化,GoboLinux 017 发布,模块化的 Linux 发行版
- [Visual Stuido SDK] VSPackages
- 关于IOCP乱序的探讨
- 写微博picgp图床安装与问题解决(看这一篇就可以了)
- golang web php,GitHub - kai-xx/goWeb: golang web 接口实现 -- 类似PHP的laravel
- linux服务器查看mysql服务名称_Linux服务器查看MySQL信息
- 微信暂停新用户注册标志一个时代的结束
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区...
- PDMS二次开发(八)——向PDMS12.1版本迁移
- c语言程序设计数字电位器,可编程数字电位器在AVR单片机中的应用
- java版的mrp模拟器,mrp模拟器
- Python菜鸟教程,带你十分钟入门!
- mac开启HiDPI
- 游戏拳皇命运服务器维护,拳皇命运
- 马王堆汉墓帛书‧老子——甲本释文(道经)
- 4699. 如此编码
- 阿里云校验用户身份证信息是否是真实有效,姓名和身份证号是参数
- 简单图片自动手动播放html,js手动播放图片实现图片轮播效果
热门文章
- 禾瑞亚科触摸屏驱动程序移植过程与遇到的问题--egalax_i2c
- 五·C语言之·操作符这么有趣的嘛?
- WooCommerce API Keys的生成和保存机制
- LINUX-查看历史操作记录
- Java常见面试题(JVM)
- android XML文件注释
- 谷歌公开了内部管理Infra层的两个工具的Paper
- 记 · 再看 · 前端社区氛围
- Scrapy框架快速执行cmd命令:‘scrapy crawl qsbk_spider’
- python namedtuple默认值_python 使用 namedtuple