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

在没有GradleAppi和localGroovy的情况下,以编程方式生成插件依赖项列表

施晗昱
2023-03-14

我想用nebula测试对我的插件进行回归测试。我的插件是用Groovy编写的,但它很简单,当用Gradle 1构建时。x可用于Gradle 2项目。x、 目前我可以用Gradle 1自动测试。x仅由于类路径上的Gradle和Groovy冲突(当从Gradle 2.x运行时,Gradle 1.x和2.x以及Groovy 1.8.6和2.3.6依赖项)。作为一种解决方法,我想把我的插件放在仅类路径的运行时依赖项上(不包括由GradleAppi和localGroovy提供的JAR),并且我需要在为我的插件运行Gradle构建脚本时生成该列表(当测试运行时,确定给定JAR中包含的内容为时已晚)。

如果没有来自gradleApilocalGroovy的依赖项,我如何以编程方式(例如build.gradle中的任务)生成运行时依赖项列表(实际上是由它们构建/类/main和构建/资源/main添加到类路径中的JAR)?

共有2个答案

燕星鹏
2023-03-14

以下是一个不需要添加额外配置的解决方案:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.apache.ant:ant-javamail:1.9.0'
    compile 'javax.mail:mail:1.4'
    compile 'javax.activation:activation:1.1.1'
    compile gradleApi()
    compile localGroovy()
}

task deps << {
    def home = project.gradle.startParameter.gradleHomeDir
    project.configurations.runtime.files.findAll { f ->
        !f.absolutePath.startsWith(home.absolutePath)
    }.each {
        println it
    }
}
扈瑞
2023-03-14

听起来你想要这样的东西:

configurations {
    gradleDeps
}

dependencies {
    gradleDeps gradleApi() // includes localGroovy
    compile configurations.gradleDeps
    compile ...
    runtime ...
}

def runtimeWithoutGradleDeps = configurations.runtime - configurations.gradleDeps

task printFiles {
    doLast {
        runtimeWithoutGradleDeps.each { println it }
    }
}
 类似资料:
  • 问题在于,当我通过工件spring-boot-maven-plugin用maven编译服务时,.war文件内部总是有依赖关系。因为我想知道是否有人知道如何配置maven来删除.war文件中的依赖项......穿着春靴。 war随后出现了里面的依赖关系,经过编辑:我已经添加了提供的,就像Michael Potter所说的和执行一样。很好用。我的pom.xml如下:

  • 我正在编写一个spring-mvc应用程序(并学习spring-mvc)。我没有向pom.xml添加servlet依赖项。当我运行或时,它会成功地完成。不是应该抛出类似“can not find javax.servlet.http.HttpServlet”这样的异常吗?它是如何编译的?

  • 问题内容: 如何以编程方式在Maven执行环境之外获取Maven模块的所有依赖关系? 到目前为止,我有: 通过maven-core: 并通过jcabi-aether: 到目前为止,这通常正确吗? 现在的问题是,我得到了NullPointerException: 因为mavenProject.getRemoteProjectRepositories()返回null。 如何在考虑settings.xm

  • 问题内容: 有一个Java文件,其中包含一些依赖项jar。但是现在,我没有那些jars,必须将其编译为.class文件。 是否有可能做到这一点? 更新 感谢您的回答。 起初,我认为我们可以为缺少的依赖项创建一些存根,这很简单但是很无聊。既然我们可以创建存根而不会丢失存根以使编译器满意,那么为什么我们不能使工具自动完成呢?该工具不需要创建存根,而是读取java文件,收集信息,然后构建.class文件

  • 我正在尝试安装一个没有依赖项的python模块。 我跑: 但是这个安装依赖项,任何想法怎么能做到这一点?