maven2 笔记

2023-11-17

http://blog.csdn.net/liu251/article/details/2767188

 学习Mina的时候,发现Mina使用Maven做项目管理的。又开始学习Maven,这段时间做的笔记。要学会这种类似于ant,又比ant高级的build工具,首先要掌握mvn命令下的各个参数,然后将这些mvn、参数组合在实际的项目中加以运用。

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 代码

 

  1. <repositories>  
  2.   <repository>  
  3.     <id>mylibsid>  
  4.     <url>http://localhost/maven2/repositoryurl>  
  5.   repository>  
  6. 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 代码

 

  1. xml version="1.0" encoding="UTF-8"?>  
  2. <project>  
  3.     <modelVersion>4.0.0modelVersion>  
  4.     <groupId>net.jeffreygroupId>  
  5.     <artifactId>xxxartifactId>  
  6.     <version>1.0version>  
  7.     <dependencies>  
  8.     dependencies>  
  9. project>  

         为jar和pom生成校验文件

         可以通过一个ant任务来做:

xml 代码

 

  1.   
  2. <target name="checksum" description="Generate checksum file for jar and pom">  
  3.        <checksum algorithm="SHA" fileext=".sha1">  
  4.            <fileset dir="d:/javalib" id="id">   
  5.               <include name="**/*.pom" />  
  6.               <include name="**/*.jar" />  
  7.               <include name="**/*.xml" />  
  8.               <exclude name="**/*.sh1" />  
  9.            </fileset>  
  10.        </checksum>  
  11. </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

...

 

 

(转自:http://hi.baidu.com/mylovechangchu/blog/item/915b24a95f5850f81e17a2c6.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven2 笔记 的相关文章

  • python监听端口获取数据_python从网络端口读取文本数据

    python从网络端口读取文本数据 To test it with netcat start the script and execute echo Hello cat ncat exe 127 0 0 1 12345 import soc
  • Pytorch中实现CPU和GPU之间的切换

    如何在pytorch中指定CPU和GPU进行训练 以及cpu和gpu之间切换 由CPU切换到GPU 要修改的几个地方 网络模型 损失函数 数据 输入 标注 创建网络模型 tudui Tudui if torch cuda is availa
  • 递归、加法原理,如何分解问题(独立且完备的划分)

    加法原理适用于做一件事有n种独立不相交且完备的方向 每个方向上有ai种方案 则总的方案数就是 a1 a2 an 例题 把n个数分为k个非空子集 有多少种分法 分解问题 第一个集合里放多少个数把原问题的解分成了独立且完备的若干方向 分别解每个
  • 如何基于数据分析精准定位你的用户群?

    还没关注 快动动手指 01 行为事件分析 行为事件分析 对于很多业务人员来说相对比较陌生 但它却是用户分析的第一步 也是用户分析的核心和基础 一般来说事件通过埋点来获得 行为事件分析法主要用于研究某行为事件的发生对企业组织价值的影响以及影响
  • JAVA_import导入类

    如果我们要使用其他包的类 需要使用import导入 从而可以在本类中直接通过类名来调用 否则就需要书写类的完整包名和类名 import后 便于编写代码 提高可维护性 注意要点 1 Java会默认导入java lang包下所有的类 因此这些类
  • STM32CUBEIDE 环境下printf()和scanf()运行失败的原因

    STM32CUBEIDE 环境下printf 和scanf 运行失败的原因 问题重现 int io putchar int ch HAL UART Transmit huart1 uint8 t ch 1 0xFFFF
  • 解决Centos虚拟机复制文件失败问题

    问题 Error when getting information for file tmp VMwareDnD p6v6B6 No such file or directory 解决 安装 卸载预装的 open vm tools 包 检测
  • Google hacking了解

    google hacking方法技术手册 1 黄金法则 不区分大小写 通配符只表示词组中一个词 32个单词限制 关键字 双引号强制搜索包含关键字内容 intext password username userid xxx 1 利用搜索引擎进

随机推荐

  • 【测试】利用LoadComplete确定不同负载下的服务器性能

    LoadComplete是一个负载测试工具 用于为Web服务器和服务创建和运行自动负载测试 它可以在手机 网站和web应用程序上设计和运行性能 压力和负载测试 您不需要有编程知识 创建一个负载测试只需要几秒钟的时间 接下来我们通过LoadC
  • ELK系列(二)、在Kibana中使用RESTful操作ES库

    上一篇讲了如何安装ELK ELK系列 一 安装ElasticSearch Logstash Kibana Filebeat v7 7 0 这篇介绍如何使用kibana连接ES并操作 先介绍一下ES和关系型数据库的概念对应 在ES7以前的版本
  • 字典树p8036

    Description 给定 n 个模式串 1 2 s1 s2 sn 和 q 次询问 每次询问给定一个文本串 ti 请回答 1 s1 sn 中有多少个字符串 sj 满足 ti 是 sj 的前缀 一个字符串 t 是 s 的前缀当且仅当从 s
  • Windows下MySQL的详细安装教程

    1 安装之前需要注意的几点 建议不要安装最新版本 一般找mysql5 0系列版本即可 mysq1官网有 zip和 msi两种安装形式 zip是压缩包 直接解压缩以后使用的 需要自己配置各种东西 msi是安装包 系统直接帮我们安装搞定 新手建
  • (c)面向过程与(c++)面向对象有什么区别

    相信大家都有一定的了解 c语言是一个面向过程的语言 而c 是一个面向对象的语言 那么面向对象和面向过程有什么区别呢 各举一个例子吧 C面向过程 gt 从面向过程的方向考虑就像我要开车我就要先开门 系安全带 打火 松手刹 挂挡 起步 我们关心
  • 二、Linux网络编程:Socket编程-接口

    2 Socket编程 接口 2 1 接口转换 转接口的换操作主要分为三类 字节序转换操作 IP地址转换操作和主机名转换操作 2 1 1 字节序转换操作 网络序转主机序 函数 含义 作用 ntohs network to host short
  • service启动失败问题排查

    本文首发在我的个人博客 https jlice top p 7ve9p 欢迎大家前去参观 么么哒 我的电脑在启动时总会提示 Failed to start Load Kernel Modules 虽然不影响使用 可强迫症看了还是会觉得难受
  • java jdbc 保存,​高级进阶 JDBC 保存和导出文本文件

    1 创建一个 表 textfile create table textfile id int primary key auto increment content longtext 2 向 表 textfile的 content 字段中保存
  • Java中String中的substring()方法的使用

    Substring 1 public String substring int index 使用此方法目的在于返回一个新的字符串 它是此字符串的一个子字符串 该子字符串始于指定索引处的字符 一直到此字符串末尾 下面举两个例子说明 schlo
  • 身材不高穿什么身材不高穿什么

    穿衣TIPS 个子小又丰满的女孩 选择短裙是对的 特别是亮色的短裙 可以把人的视线往上提 增加高度感 穿衣TIPS 小个子的MM们在挑选衣服的时候 最重要的就是要先确定自己的风格 如果你确实比较丰满 那么就干脆学曾宝仪走可爱路线吧 选择一些
  • 【QPalette】调色板简介

    描述 QPalette类包含每个小部件状态的颜色组 调色板由三个颜色组组成 活动的 禁用的和非活动的 Qt中的所有小部件都包含一个调色板 并使用它们的调色板来绘制自己 这使得用户界面易于配置和保持一致 如果您创建一个新的小部件 我们强烈建议
  • c语言常见练习题

    计算一个程序的运行时间 include
  • Centos系统安装Nodejs

    1 软件下载 官方网站 https nodejs org en 1 新版本下载说明 新版本可以在home页面直接下载 也可以在DOWNLOADS页面下载 2 旧版本下载说明 进入 DOWNLOADS 页面 页面滑动到最下面 点击左侧 Pre
  • PHP+jQuery+jCrop在线上传裁剪头像(内含源码)

    源码里面使用到两个开源的jQuery插件 其一是Ajax上传用的是uploadify 这个上传插件比较牛逼 并且可以自定义的东西也比较多 demo里面我用的不完善 没有把项目里面用到的取消上传和删除功能加上 同样也可以使用其他不需要使用Fl
  • 华为OD机试真题 Java 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

    一 题目描述 如果矩阵中的许多系数都为零 那么该矩阵就是稀疏的 对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省 并且在许多大的实践中都会出现矩阵稀疏的问题 给定一个矩阵 现在需要逐行和逐列地扫描矩阵 如果某一行或者某一列内 存在连续出
  • unity 获得当前物体_Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作

    获取当前键盘按键 代码如下 using UnityEngine using System Collections public class GetCurrentKey MonoBehaviour KeyCode currentKey voi
  • 解决draw.io生成SVG矢量图导入Word显示有误的问题以及推荐几种SVG绘图方法

    解决draw io生成SVG矢量图导入Word显示有误的问题以及推荐几种SVG绘图方法 起因 解决办法 操作步骤 修改后效果 关于Word加载项draw io工具 流程图等推荐用Xmind 图表数据等也可以用Python的matplotli
  • centos7 基础命令

    一 linux基础 1 查看服务器的IP信息 ip add showifconfig 2 操作网卡命令 重启网络和启用网卡 systemctl restart networksystemctl start networksystemctl
  • 最近大火的两大AI绘图工具 Midjourney VS StableDiffusion

    大家好 今天给大家介绍一下最近大火的两大AI绘图工具 Midjourney 官网 和stable diffusion 官网 下面将分别从上手难易程度 出图效果 出图效率 使用成本进行对比 1 上手难易度 首先我们来看上手难易度 Midjou
  • maven2 笔记

    http blog csdn net liu251 article details 2767188 学习Mina的时候 发现Mina使用Maven做项目管理的 又开始学习Maven 这段时间做的笔记 要学会这种类似于ant 又比ant高级的