gpt4 book ai didi

java - 如何避免 Gradle 的 osgi 插件为私有(private)包生成 export-pacakge 条目,为嵌入式依赖项生​​成 import-package 条目

转载 作者:行者123 更新时间:2023-11-29 08:38:15 28 4
gpt4 key购买 nike

尊敬的 StackOverflow 用户

我有一个 gradle 项目,我想将其工件转换为 osgi 包。在这个包中,我有:

  • 我不想导出的包(可能不会出现在 list 的 Export-Package 条目中)
  • 我要嵌入的依赖项(可能不会出现在 list 的 Import-Package 条目中)

经过一些修改后,我提出了以下 gradle.build 文件,它可以实现我的意图,但可能不是最干净的方式,利用 bnd...

group 'com.mycompany'
version '1.0.0'

apply plugin: 'java'
apply plugin: 'osgi'

repositories {
jcenter()
}

dependencies{
compile 'org.osgi:org.osgi.framework:1.8.0' //provided
compile 'com.google.code.gson:gson:2.8.0' //embedded
}


jar {
//embedding the gson dependency
from({
def x = configurations.compile.find({
return it.getName().contains('gson')
})
def tree = zipTree(x)
return tree
})

//explicitly building manifest entries
manifest {
instruction 'Bundle-Vendor',
'My Company'
instruction 'Bundle-Activator',
'com.mycompany.mybundle.Activator'
instruction 'Import-Package',
'!com.google.gson',
'*'
instruction 'Export-Package',
/com.mycompany.mybundle;version="${version}"/
}
}

是否有可能以更简洁的方式完成此操作?我主要想避免两件事:

  1. 必须手动编写导入和导出包条目
  2. 必须手动将嵌入式依赖项 (gson) 的内容复制到我的 jar 中

我认为 bnd(作为 osgi 插件的基础)可以为我做到这一点,但是到目前为止我已经尝试过(即使我将它们添加为私有(private)包)bnd 仍然导出所有内容并导入 gson 包以及它赢得了'将 gson 类添加到 jar

最佳答案

你最好使用 Bnd Gradle plugin对于 OSGi。它由对 OSGi 略知一二的 bnd 开发人员编写并提供支持。

关于java - 如何避免 Gradle 的 osgi 插件为私有(private)包生成 export-pacakge 条目,为嵌入式依赖项生​​成 import-package 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182533/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com