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

maven项目作为gradle项目中的依赖项

单勇
2023-03-14

我有一个使用Gradle作为构建工具的项目和第二个使用Maven的POM的子项目。我没有在子项目上更改构建工具的自由。

我想要实现的是将我的项目添加到Maven POM中,作为我的Gradle项目的依赖项。

其中root(当前目录)是我的Gradle项目,并包含build.gradle,Maven项目位于供应商/其它html" target="_blank">程序/下,POM文件就在该目录下。

我在我的< code>build.gradle文件中尝试了这些变化:

第一次尝试:

include("vendor/other-proj/")
project(':other-proj') {
    projectDir = new File("vendor/other-proj/pom.xml")
}

dependencies {
    compile project(':other-proj')
}

第二次尝试:

dependencies {
    compile project('vendor/other-proj/')
}

第三次尝试:

dependencies {
    compile project('vendor/other-proj/pom.xml')
}

第四次尝试:

dependencies {
    compile files 'vendor/other-proj/pom.xml'
}

我无法在网上找到任何相关的东西,似乎大多数Gradle / Maven用例都受到发布到Maven或生成POM的影响,但我不想做任何这些。

任何人都可以给我指出正确的方向吗?

共有2个答案

诸正谊
2023-03-14

您不能在gradle settings.gradle中“包含”maven项目。最简单的方法是构建maven项目,并使用mvn安装(可以是default.m2或任何其他自定义位置)将其安装到本地repo,然后使用groupname:modulename:version从gradle项目中使用它

repositories{
    mavenLocal()
}

dependencies{
    compile 'vendor:otherproj:version'
}

使用编译文件可以直接依赖于maven项目的jar,但这并不理想,因为它不会获取可传递的依赖项,您必须自己手动添加这些依赖项。

奚光霁
2023-03-14

您可以“伪造”包括这样的Maven项目:

dependencies {
    compile files("vendor/other-proj/target/classes") {
        builtBy "compileMavenProject"
    }
}

task compileMavenProject(type: Exec) {
    workingDir "vendor/other-proj/"
    commandLine "/usr/bin/mvn", "clean", "compile"
}

这样,Gradle将在编译之前执行Maven构建(< code>compileMavenProject)。但请注意,它不是传统意义上的Gradle“项目”,不会显示出来,例如,如果您运行< code>gradle dependencies。将编译好的类文件包含在你的Gradle项目中只是一个小技巧。

编辑:您可以使用类似的技术来包含maven依赖项:

dependencies {
    compile files("vendor/other-proj/target/classes") {
        builtBy "compileMavenProject"
    }
    compile files("vendor/other-proj/target/libs") {
        builtBy "downloadMavenDependencies"
    }
}

task compileMavenProject(type: Exec) {
    workingDir "vendor/other-proj/"
    commandLine "/usr/bin/mvn", "clean", "compile"
}

task downloadMavenDependencies(type: Exec) {
    workingDir "vendor/other-proj/"
    commandLine "/usr/bin/mvn", "dependency:copy-dependencies", "-DoutputDirectory=target/libs"
}
 类似资料:
  • 我通过这个链接将一个gradle项目作为依赖项导入另一个gradle项目。有没有办法将maven项目作为依赖项包含到gradle项目中?

  • 我有一个包含多个子项目的根项目。最初,我们将这些项目作为独立的Maven项目保留,但我意识到Gradle更适合我使用。但是对于其中一个子项目,我们宁可不将其转换为Gradle项目,而将其保留为Maven项目。 root/build.gradle root/common.gradle root/api/pom.xml

  • 我是gradle的新手,我现有的大多数项目都在ant(netbeans项目)中。 我必须为我想重用的每个项目创建gradle项目吗? 我可以在gradle项目中直接声明现有的netbean项目为依赖项吗?如果是,如何? 谢谢。

  • 是否可以从pom.xml引用本地Gradle项目作为Maven项目的本地依赖项? 搜索很容易给我一个相反的结果--“如何从gradle Builds引用maven项目”,但不是我的情况。

  • 在我开始之前--我看了以下链接,没有一个对我起作用(我的假设是我做错了什么): > https://appmediation.com/how-to-add-local-libraries-to-gradle/ 如何向build.gradle文件添加本地.jar文件依赖项? 在我的Gradle Java项目中使用本地jar作为依赖项 如何向build.gradle.kt文件添加本地.jar文件依赖项

  • 我想有一个使用Spring Boot的微服务项目,它通过通过Spring Data JPA项目创建的依赖项访问实体和DAO。这个想法是多个微服务可以获得该依赖项。 然而,当jar在Spring Boot Data JPA项目中组装时,它通过starter依赖项包含了许多依赖项。其中大多数也出现在使用它的Spring Boot Microservice项目中。 您将如何通过Spring Data J