`
小网客
  • 浏览: 1243710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

“Maven官方用户入门指南”翻译之七

 
阅读更多

如何使用外部依赖?

例子中有可能已经有dependencies元素了。实际上你会随时使用到外部的依赖资源,这边我们会谈论下他们是如何工作的。更详细的介绍请参考我们的依赖机制介绍

pom文件的dependencies 片段中列出了所有的项目依赖,包括编译,运行,测试等用到的。目前我们的项目只依赖JUnit ,其他资源相关信息拿掉之后如下:

 

<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>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

对于任意一个外部依赖你需要定义如下四种事情: groupId, artifactId, version, 和scope。 groupId, artifactId, version这三个就按pom文件给定的定义即可,scope 标示你的工程运行此依赖的环境,值的形式如下:compiletest, 和runtime。其他关于依赖的信息请参考项目描述参考。更多关于依赖机制相关信息请参看依赖机制介绍

maven构建的时候会获取依赖的相关信息,那么maven是从那获取的呢?maven首先会从本地资源库中获取资源(~/.m2/repository为本地资源库),首先把我们自己的jar放置到本地资源库上。一旦我们放进去了,其他的工程就可以依赖使用他也就是在pom文件中添加依赖:

<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">
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-other-app</artifactId>
  ...
  <dependencies>
    ...
    <dependency>
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-app</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

 那么依赖jar从哪来?他们是如何进入我们本地资源库的?当工程依赖了一个本地资源库不存在的jar的时候,maven就会从远程资源库上下载到本地资源库中去。有可能你注意到了,当你第一次编译工程的时候maven下载了很多东西(下载的这些东西就是构建项目的所有依赖)。默认远程资源库地址为: http://repo.maven.apache.org/maven2/,如果贵公司有自己的资源库的话那么你可以替换成自己的远程资源库,或者添加成自己的远程资源库。更多信息请参考资源库介绍

让我们在我们的项目中添加依赖,我们需要记录一些日志那么我们就需要log4j这个依赖。首先我们应该知道log4j的groupId, artifactId和version。我们可以在ibiblio 中获取,或者通过谷歌site:www.ibiblio.org maven2 log4j搜索到 。结果展示目录为 /maven2/log4j/log4j (or /pub/packages/maven2/log4j/log4j)这个目录中有一个maven-metadata.xml. 文件里面记录了如下信息:

<metadata>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.1.3</version>
  <versioning>
    <versions>
      <version>1.1.3</version>
      <version>1.2.4</version>
      <version>1.2.5</version>
      <version>1.2.6</version>
      <version>1.2.7</version>
      <version>1.2.8</version>
      <version>1.2.11</version>
      <version>1.2.9</version>
      <version>1.2.12</version>
    </versions>
  </versioning>
</metadata>

通过上述文件我们可以知道groupId 和artifactId都是log4j,同时也有很多可供选择的版本。现在我们就用最新的1.2.12 版本,在maven-metadata.xm文件旁边有针对版本的lib目录,每个里面我们可以精确的查找到jar,比如 log4j-1.2.12.jar。每个lib里都有一个pom文件和maven-metadata.xml,同时都有一个md5文件,这个里面包括对jar文件的一个md5值,你可以基于这个做文件校验,看是否你所需要的,那么现在我们就把这个依赖加入我们的pom文件:

<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>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

现在当你编译工程的时候(mvn compile),你可以看到maven从资源库上下载依赖的log4j jar文件。

如何发布jar到远程资源库上?

把jar发布到外部资源库你需要在pom中配置资源库地址,以及在settings.xml.配置链接认证信息。

此处我们利用scp和username/password来做例子

<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>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>1.0.4</version>
    </dependency>
  </dependencies>

  <build>
    <filters>
      <filter>src/main/filters/filters.properties</filter>
    </filters>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>
  <!--
   |
   |
   |
   -->
  <distributionManagement>
    <repository>
      <id>mycompany-repository</id>
      <name>MyCompany Repository</name>
      <url>scp://repository.mycompany.com/repository/maven2</url>
    </repository>
  </distributionManagement>
</project>

对应的setting文件:

<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">
  ...
  <servers>
    <server>
      <id>mycompany-repository</id>
      <username>jvanzyl</username>
      <!-- Default value is ~/.ssh/id_dsa -->
      <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa)
      <passphrase>my_key_passphrase</passphrase>
    </server>
  </servers>
  ...
</settings>

注意:如果你链接一个开发的ssh服务器,他的sshd_confing配置中PasswordAuthentication应该设置成no,那么你就不得不输入 username/password去做认证(你可以通过ssh客户端登陆)。那么你可以基于public key 来做认证。

需要注意的是如果你在settings.xml中使用了密码认证那么更多信息请参考密码加密技术.

 

 

0
0
分享到:
评论

相关推荐

    Docx4j入门指南

    Docx4j的入门指南主要针对新用户,提供了文档的最新版本,可以在GitHub的docs目录中找到。当前大部分的入门文档是英文版本,但用户也可以通过机器翻译或自行翻译为其他语言。有兴趣提供翻译版本的用户,可以通过联系...

    Jetspeed2官网guide文档翻译2

    【Jetspeed2官网guide文档翻译2】这篇文档主要面向初次接触Jetspeed的用户,提供了从源码构建和部署Jetspeed 2.2的详细步骤。Jetspeed是一个开源的portlet容器和企业信息门户平台,它允许集成多种应用和服务,提供...

    HBase_官方文档-中文翻译

    快速入门适合对 HBase 有一定了解的用户,而慢速开始则提供了更详尽的配置和运行环境设置指南。 **配置** 配置 HBase 包括几个关键文件:`hbase-site.xml` 用于自定义配置,`hbase-default.xml` 提供默认配置参数...

    radiusmanager3.9.0中文包

    - 文档:包括用户手册、快速入门指南和常见问题解答,帮助用户理解和操作软件。 - 配置文件:预设的配置模板,简化初始设置。 - 示例数据库:展示如何设置和管理用户、设备和服务。 - 语言包:包含中文翻译的界面...

    mybatis用户指南

    文档鼓励用户发现文档中的任何不足之处,并鼓励用户自己学习并撰写文档,源文件以xdoc格式提供,存放在项目的Git Fork仓库中。 对于MyBatis的安装,用户只需要将mybatis-x.x.x.jar文件包含在类路径中。如果使用...

    mybatis中文文档(黑白书籍版)

    特别是Maven用户,只需要将相应的dependency代码片段加入到pom.xml文件中,即可快速完成MyBatis的依赖引入。 关于XML配置,文档详细说明了如何从XML文件构建SqlSessionFactory实例。SqlSessionFactory是MyBatis中一...

    Spring Boot Reference Guide 中文文档

    Spring Boot Reference Guide中文文档是对Spring Boot官方文档的翻译,它为中文用户提供了学习和使用Spring Boot的指南。 文档中主要涵盖了以下知识点: 1. 文档结构:文档包含多个章节,从基础的入门指导到高级...

    Spring Boot 2 中文 参考手册 中文文档

    对于初学者,可以尝试Spring官方提供的入门指南。此外,可以在stackoverflow网站上提问,或者在Spring Boot的GitHub仓库中报告bug。 3. 第一步 文档还提供了一个“第一步”的部分,旨在帮助用户开始使用Spring Boot...

    Spring Framework Reference Documentation 4.25

    - **简介**:这部分内容为开发者提供了快速入门指南,帮助新用户理解如何开始使用Spring框架进行开发。 - **目标读者**:面向希望了解如何快速搭建Spring应用环境的初学者。 ##### 2. Spring框架介绍 - **依赖注入...

    junit单元测试文档

    文档提到了JUnit 5的用户指南,介绍了JUnit 5官方user guide文档的翻译,以及英文官方文档的来源。文档的当前版本是JUnit 5.0.24。为了满足不同用户的阅读习惯和网络环境,文档被托管在不同的服务器上,包括国内腾讯...

    mybatis-spring指南中文版

    ### Mybatis-Spring指南中文版知识点详述 #### 第一章 介绍 ##### 1.1 为什么整合MyBatis和Spring? MyBatis作为一款优秀的SQL映射框架,在与Spring框架结合使用时能带来诸多便利。每个Spring的用户都曾期待...

    Mybatis中文手册

    #### 三、入门指南 - **安装**: - **JAR包安装**:将`mybatis-x.x.x.jar`文件放置到项目的classpath下。 - **Maven安装**:在`pom.xml`文件中添加如下依赖: ```xml &lt;groupId&gt;org.mybatis &lt;artifactId&gt;...

Global site tag (gtag.js) - Google Analytics