【问题标题】:Gradle ignores transitive dependenciesGradle 忽略传递依赖
【发布时间】:2013-01-24 06:33:54
【问题描述】:

我正在尝试使用一个 Flex 库 (SWC),它在其 POM 中定义了一些依赖项。我希望 Gradle 会自动提供这些传递依赖。但是,gradle dependencies 只显示了一个手动添加的依赖项。

merged
\--- com.example:flex-core:1.0.0

库的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.example</groupId>
  <artifactId>flex-core</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>swc</packaging>
  <dependencies>
    <dependency>
      <groupId>org.as3commons</groupId>
      <artifactId>as3commons-lang</artifactId>
      <version>0.3.6</version>
      <type>swc</type>
      <scope>external</scope>
    </dependency>
    <dependency>
      <groupId>org.as3commons</groupId>
      <artifactId>as3commons-collections</artifactId>
      <version>1.3.2</version>
      <type>swc</type>
      <scope>external</scope>
    </dependency>
    <dependency>
      <groupId>org.as3commons</groupId>
      <artifactId>as3commons-reflect</artifactId>
      <version>1.6.0</version>
      <type>swc</type>
      <scope>external</scope>
    </dependency>
  </dependencies>
</project>

我在build.gradle 中添加了以下依赖项:

dependencies {
    merged 'com.example:flex-core:1.0.0@swc'
}

为什么 Gradle 会忽略 POM 的依赖关系?是因为“外部”范围吗? 是否可以在不手动添加的情况下获取这些依赖项?

【问题讨论】:

    标签: gradle gradlefx


    【解决方案1】:

    您在声明依赖项时使用了artifact only notation (@scw)。这意味着 Gradle 将仅检索工件本身,而不使用 POM 中的传递依赖项。

    试试这个:

    dependencies {
        merged 'com.example:core:1.0.0'
    }
    

    名字不应该是flex-core吗?至少上面的 POM 是这么说的。

    【讨论】:

    • 我更新了我的问题并修复了工件名称。感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2014-11-28
    • 2015-04-03
    相关资源
    最近更新 更多