代码之家  ›  专栏  ›  技术社区  ›  tommy chheng

如何使用maven包含二级依赖项

  •  2
  • tommy chheng  · 技术社区  · 14 年前

    我有一个项目a,pom.xml依赖于:

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.2</version>
        </dependency>
    

    Commons电子邮件取决于javax.mail-1.4.1

    我运行mvn安装程序将projecta.jar安装到本地maven repo中。

    在项目B中,我依赖projecta.jar。 当我运行项目B时,它由于javax中缺少类文件而失败:

    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    java.lang.ClassNotFoundException: com.sun.mail.smtp.SMTPTransport
    

    如何在不显式地为javax.mail jar放置maven条目的情况下成功地运行项目B?


    编辑:

    我想我发现了问题。 我使用的是带有true的maven shade插件,它正在删除已安装(.m2)项目中的org.apache.commons:commons email:jar依赖项pom文件。

    注释掉项目A的maven shade插件修复了依赖性问题。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Pascal Thivent    14 年前

    c.s.m.s.SMTPTransport mail-1.4.1.jar commons-email

    mvn dependency:tree
    

    <project>
      ...
      <groupId>com.stackoverflow</groupId>
      <artifactId>Q3875317-A</artifactId>
      <dependencies>
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-email</artifactId>
          <version>1.2</version>
        </dependency>
      </dependencies>
    </project>
    

    <project>
      ...
      <groupId>com.stackoverflow</groupId>
      <artifactId>Q3875317-B</artifactId>
      <dependencies>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>Q3875317-A</artifactId>
          <version>${project.version}</version>
        </dependency>
      </dependencies>
    </project>
    

    $ mvn dependency:tree
    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'dependency'.
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Q3875317-B
    [INFO]    task-segment: [dependency:tree]
    [INFO] ------------------------------------------------------------------------
    [INFO] [dependency:tree {execution: default-cli}]
    [INFO] com.stackoverflow:Q3875317-B:jar:1.0-SNAPSHOT
    [INFO] +- com.stackoverflow:Q3875317-A:jar:1.0-SNAPSHOT:compile
    [INFO] |  \- org.apache.commons:commons-email:jar:1.2:compile
    [INFO] |     +- javax.mail:mail:jar:1.4.1:compile
    [INFO] |     \- javax.activation:activation:jar:1.1:compile
    [INFO] \- junit:junit:jar:3.8.1:test
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    ...