【问题标题】:How to exclude transitive dependency from liberty-server build.gradle file如何从 liberty-server build.gradle 文件中排除传递依赖
【发布时间】:2018-12-09 19:00:36
【问题描述】:

我有 2 个 java 项目和 1 个服务器,这三个项目都有 build.gradle 文件定义和配置我在项目中需要的依赖项。 Liberty 服务器 build.gradle 的代码 sn-p 如下:

configuration{
  project1
  project2
  oracle
  extrasecuritystuff
}

dependencies{
  project1: "fskfksd"

  project2: "sdfd"

  extrasecuritystuff 1."fsfd"
                     2."ewrwer"
}
doTask{....

我的问题是如何排除 2.“ewrwer”中存在的传递依赖。这样做的 groovy/gradle 语法是什么? 根据 gradle 文档,我尝试了类似的方法,但没有成功,一旦我触发了 Jenkins 构建,它仍在拉入传递依赖 jars。

   configurations {
           project1
           project2
           extrasecuritystuff {
            exclude group: 'javax.jms', module: 'jms'
            exclude group: 'com.sun.jdmk', module: 'jmxtools'
           }
    }

    dependencies {
      project1 'org.javax.etc' 
      project2 'org.blah.blah'   
      extrasecuritystuff 'log4j:log4j:1.2.15'
    }

【问题讨论】:

    标签: java gradle groovy build.gradle


    【解决方案1】:

    我在这里假设您正在使用诸如“应用程序”插件之类的插件来生成项目的 .zip 文件,并且您的目标是从 .zip 文件中排除传递依赖。原因可能是传递依赖具有不受欢迎的许可证,或者太大,并且您的代码实际上从未调用需要传递依赖的函数。 (绝对 100% 确保这一点,否则您的应用程序将崩溃。)或者,目标系统已经安装了该依赖项。 (同样。)

    您的示例代码中存在一些语法问题,但我已根据我的理解解释了该问题。在示例中,我的依赖 ewrwer 正在拉入我不想要的 lib-foo

    configuration{
      project1
      project2
      extrasecuritystuff
    }
    
    dependencies{
      project1 ( [...] )
      project2 ( [...] )
    
      extrasecuritystuff ('org.blah:fsfd:1.0.1')
      extrasecuritystuff ('org.bloop:ewrwer:2.12') {
           exclude group: 'org.bleep', module: 'lib-foo'
      }
    }
    

    关于管理传递依赖的更多信息,一如既往地参考the official Gradle docs.

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 2016-04-20
      相关资源
      最近更新 更多