Maven 配置文件 生命周期 常用命令详解
|
当前,JVM生态圈主要的三大构建工具:
对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂。Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单。gradle有很多开箱即用的插件,语法更加短小精悍,易于理解。 在讲解maven之前这里我们先简单比较下Maven和Ant。下面是一个简单的Ant例子。这个例子可以看出我们需要明确的告诉Ant。我们想让他做什么。有一个包含javac任务的编译目标来讲src/main/java的源码编译至target、class目录。需要明确的告诉ant源码在哪里,结果字节码存储在哪里。如何将这些字节码打包成jar文件。
<?xml version="1.0" encoding="UTF-8"?>
<project name="test_HelloWorld" basedir="." default="">
<property name="test" location="test"/>
<target name="init">
<mkdir dir="${test}/classess/com/test"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${test}" destdir="${test}/classess/com/test"/>
</target>
<target name="dist" depends="compile">
<mkdir dir="${test}/classess/com/test/lib"/>
<jar jarfile="${test}/classess/com/test/lib/test.jar" basedir="${test}/classess/com/test"/>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld" classpath="${test}/classess/com/test"/>
</target>
<target name="clean">
<delete dir="${test}/classess"/>
</target>
</project>
在Maven中你只需要创建一个简单的pom.xml。将你的源码放在指定目录下。然后运行mvn install 。就能完成和ant同样的事情。从命令行运行mvn install会处理资源文件,编译源代码,运行单元测试,创建一个jar。然后把这个jar安装到本地仓库为其他项目提供重用性。不用做任何修改,运行mvn site然后在target/site目录找到一个Index.html。这个文件链接了javaDoc和一些关于源代码的报告。 为什么maven运行一个命令就能实现ant定义的一大堆的事情? Ant
Maven
接下来我们从以下三个方面讲解Maven
maven的Settings.xml解析 对Maven本身行为的定制 <?xml version="1.0" encoding="UTF-8"?> <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <localRepository/> <interactiveMode/> <offline/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> <pluginGroups/> </settings>
mvn org.mortbay.jetty:jetty-maven-plugin:run 如果在settings.xml文件中配置了如下<pluginGroup>: <pluginGroups> <pluginGroup>org.mortbay.jetty</pluginGroup> </pluginGroups > 则可以直接执行如下命令: mvn jetty:run servers,给出用以下载或部署类库的服务器信息 mirrors <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror>
对于mirrorOf参数,如果该镜像库的目标远程库不止一个,则可以使用 * 表示任意远程库; 此外,定义镜像库还可以提供 layout(默认default),mirrorOfLayouts(默认default,legacy)。 Servers 远程库通常在POM中定义,但是远程库所在的服务器信息,如访问用户名、密码等,往往因为不适合与POM一起发布,所以需要在settings.xml文件中设置。 <server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> <id>siteServer</id> <privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave empty if not used.</passphrase> </server> id,服务器的ID,Maven在连接一个库或者镜像的时候,通过id匹配要连接的服务器; username,password,连接服务器所需的认证信息; privateKey,passphrase,连接服务器所需的认证信息。privateKey默认位于${user.home}/.ssh/id_dsa; configuration,访问服务器辅助要传递的参数,通常不必要; Proxies <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>proxyuser</username> <password>proxypass</password> <host>proxy.host.net</host> <port>80</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy>
Pom.xml解析 Maven的pom.xml文件简称POM (Project Object Model),是Maven项目的配置和管理核心。 1.POM的模型版本 <modelVersion>4.0.0</modelVersion> //说明:在Maven2和Maven3中,只支持4.0.0版本。 2.基本配置 <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> 3.Build配置 <build>...</build> <reporting>...</reporting> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – HTML ASCII Case不敏感的ICU Collator
- java随机生成时间字符串的方法
- java – 如果applet在浏览器的JRE中运行,为什么机器上需要J
- java – 单击命令图标后如何显示命令的下拉菜单?
- futuretask用法及使用场景介绍
- 如何将Java Date对象转换为JRuby Time对象?
- MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)
- java-ee – 如何将来自不同项目模块的@Inject对象包含在jar
- spring boot实战之本地jar包引用示例
- java – 具有多种类型的json字符串Map [String,Object]
