Maven参考手册

最近都在使用maven来开发系统,关于maven以前了解的不多,现在统一整理成一个使用手册。

1.setting.xml

1.1概要

setting.xml是maven的配置文件,其基本结构如下所示:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
    http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
      <pluginGroups/>
      <servers/>
      <mirrors/>
      <proxies/>
      <profiles/>
      <activeProfiles/>
    </settings>

setting.xml文件位于:

$M2_HOME/conf/settings.xml
${user.home}/.m2/settings.xml

两个配置文件都能够发挥作用,当然,用户专属的settings.xml有优先权。

显然,settings.xml能够定义maven的一些行为。

一般来说,公司内部会有公共的settings.xml,只需要copy一份到~/.m2文件夹下就能发挥作用。

1.2各项配置的作用

  <interactiveMode>true</interactiveMode>
  <usePluginRegistry>false</usePluginRegistry>
  <offline>false</offline>
  • localRepository:这是本地仓库的地址。默认是~/.m2路径。
  • interactiveMode:默认为true,这决定了用户输入时的交互形式。
  • usePluginRegistry:如果需要通过配置管理插件,配置路径:${user.home}/.m2/plugin-registry.xml。默认为false,即不配置。
  • offline:当需要离线环境时,可以将此配置文件配置为false。(比如说公司网络挂了)
  <pluginGroups>
    <pluginGroup>org.mortbay.jetty</pluginGroup>
  </pluginGroups>

pluginGroups用来配置mvn插件,比如说上面的code,会安装jetty插件。运行方法为:

mvn jetty:run

1.3配置私服

setting.xml最重要的一个功能就是能够指定私服私服的重要意义在于,可以在中心maven服务器任意发布jar包,不用担心泄密。

  <servers>
    <server>
      <id>server001</id>
      <username>my_login</username>
      <password>my_password</password>
      <privateKey>${user.home}/.ssh/id_dsa</privateKey>
      <passphrase>some_passphrase</passphrase>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
      <configuration></configuration>
    </server>
  </servers>
  • id username password:根据私服的设置来配置id 用户名和密码。
  • privateKey, passphrase:如果私服位于外网,那么配置公钥登录就是必须的。更详细的内容参考:http://maven.apache.org/guides/mini/guide-encryption.html
  • filePermissions, directoryPermissions: 下载下来的文件和目录权限控制,一般默认就好。
  <profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>codehausSnapshots</id>
          <name>Codehaus Snapshots</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://snapshots.maven.codehaus.org/maven2</url>
          <layout>default</layout>
        </repository>
      </repositories>
      <pluginRepositories>
        ...
      </pluginRepositories>
      ...
    </profile>
  </profiles>
  • releases, snapshots: 控制当releases, snapshots,需要只让snapshots下载时有用。
  • enabled:可用性
  • updatePolicy:更新政策
  • checksumPolicy:校验政策
  • layout:默认就好

2.pom.xml

2.1 概要

pom的意思是Project Object Model,是用来配置项目环境的文件。

所有的参数如下所示:

<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/xsd/maven-4.0.0.xsd">
  
  <modelVersion>4.0.0</modelVersion>
 
  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>
 
  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>
 
  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>
 
  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

2.2基础

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
</project>

groupId:包名,与此同时,项目会在mvn install之后放入~/m2/repository/xxx对应的路径下。
artifactId:应用名
version:版本号

参考文献

maven官方文档:setting.xml
maven官方文档:pom.xml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 6,168评论 0 25
  • maven maven是一个跨平台的项目管理的工具。隶属于Apache下的一个开源项目。主要服务于Java平台的项...
    jwfy阅读 907评论 0 2
  • 转个街头,我看到了一家饭店,匆匆忙忙的跑跑过去,唉!饿死我了,我毫不犹豫的坐了下来,叫了一碟菜,,一会那边传来了淡...
    WUDAN阅读 520评论 1 2
  • 传送门:https://www.gitbook.com/book/zsisme/ios-/details
    永远都能阅读 731评论 0 3