当前位置: 首页 > 知识库问答 >
问题:

对`Compile project(:dependency)`maven依赖项的分级映射?

荀正谊
2023-03-14
-- root (folder 'gradle_test')
   L--wrapper (depends on some 3rd-party maven libs)
   L--module1 (depends on wrapper)
   L--app

我需要module1 jar(以及作为可传递依赖项的包装器jar)在本地maven Repo中发布。

build.gradle:

// for maven
ext {
    groupId = 'mygroup'
    version = '3.0'
}

包装器build.gradle:

apply plugin: 'maven'
...
// maven pom
install {
    repositories.mavenInstaller {
        pom.groupId = rootProject.ext.groupId
        pom.artifactId = 'wrapper'
        pom.version = rootProject.ext.version
    }
}
dependencies {
    compile project(':wrapper')

    ...
}
// maven pom
install {
    repositories.mavenInstaller {
        pom.groupId = rootProject.ext.groupId
        pom.artifactId = 'module1'
        pom.version = rootProject.ext.version
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mygroup</groupId>
  <artifactId>module1</artifactId>
  <version>3.0</version>
  <dependencies>
    <dependency>
      <groupId>gradle_test</groupId>     // error 1: gradle project name (instead of overriden mvn groupId)
      <artifactId>wrapper</artifactId>
      <version>unspecified</version>     // error 2: not set at all
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

换句话说,Gradle对于从compile project(:wrapper)声明映射的maven依赖项不使用maven模块groupid/artifactid/version。

我该怎么做/修理它?

共有1个答案

欧阳炜
2023-03-14

我必须为包装器模块1编写:

// mvn
group = rootProject.ext.groupId
version = rootProject.ext.version

并且可以删除:

install {
    repositories.mavenInstaller {
    ...
    }
 }

由于Gradle将使用project.group作为mvn模块groupidproject.version作为mvn模块version:

 类似资料:
  • 我有一个gradle构建,它依赖于一个在buildSrc目录中编译的插件(MyTools)。这部分工作正常。我遇到的问题是试图从外部jar导入一个类以在myTools插件的源代码中使用。 我的目录结构如下: buildsrc ----build.gradle -----build.gradle -----settings.gradle -------libs -------Yuicompresso

  • PS:请不要建议我在这里使用assembly或其他fat-jar插件,因为我有意复制依赖项jar用于Docker映像构建优化:一层用于依赖项,另一层用于jar,在任何依赖项改变之前,依赖项层总是被缓存:

  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个

  • 在本章中,您将学习如何使用Aurelia依赖注入库。 首先,我们需要在src文件夹中创建新的文件dependency-test.js 。 在这个文件中,我们将创建一个简单的类DependencyTest 。 该类稍后将作为依赖项注入。 src/dependency-test.js export class DependencyTest { constructor() { this

  • 我需要从maven Dependence插件中排除单个工件:复制依赖项。 在文档上:https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html我发现了两个有趣的选择: ExcludeArtifactId,它将排除与给定工件id匹配的所有工件(组id上的通配符) ExcludeGroupId