构建maven人工制品的两个版本

构建maven人工制品的两个版本,maven,dependencies,Maven,Dependencies,依赖于()的依赖关系最近已分为LGPL和GPL版本,具体取决于底层ffmpeg的配置方式。 发布了两组不同的工件(例如和) API对于我们的目的是一样的——我们不需要更改代码。就支持的内容而言,它在运行时是动态的,但这没关系。考虑到不同的硬件支持,它已经很灵活了 我想构建两组工件作为一个并行路径,通过我们的树(例如,两个版本的core、api、viewer、examples等)作为具有不同许可依赖关系的jar,以允许用户选择他们喜欢的一个。目标是用户可以选择特定版本的代码和依赖项“正常工作”,因

依赖于()的依赖关系最近已分为LGPL和GPL版本,具体取决于底层ffmpeg的配置方式。 发布了两组不同的工件(例如和)

API对于我们的目的是一样的——我们不需要更改代码。就支持的内容而言,它在运行时是动态的,但这没关系。考虑到不同的硬件支持,它已经很灵活了

我想构建两组工件作为一个并行路径,通过我们的树(例如,两个版本的core、api、viewer、examples等)作为具有不同许可依赖关系的jar,以允许用户选择他们喜欢的一个。目标是用户可以选择特定版本的代码和依赖项“正常工作”,因为正确的依赖项要么包含在uber jar中,要么通过maven拉入

所以我有一个
jmisbapi lgpl-${version}.pom/jar
(可能还有依赖于uber-jar的jar),它依赖于
jmisb核心lgpl-${version}.[pom,jar]
,而反过来又依赖于
ffmpeg平台-${other version}.[pon,jar]
。并同时构建,
jmisbapi gpl-${version}.pom/jar
这取决于
jmisb核心gpl-${version}.[pom,jar]
这反过来又取决于
ffmpeg平台gpl-${other version}.jar


首选/推荐的方法是什么?或者,什么是一种相对干净的方法,可以在不需要手动选择要生成的存储库的情况下同时生成这两个存储库?

First mvnrepository不是中央存储库。这是核心:问题是:如果api等是相同的,那么您只需要创建一组工件,这些工件定义了用户必须定义为依赖项的所需部分(使用lgpg或gpl的工件)?例如,在同一个最终uber JAR中可以同时拥有两组工件,但这样做没有意义,因为在这种情况下,GPL无论如何都会在构建时应用。你能澄清一下目标是什么吗?例如,您可以单独提供GPL JAR,让用户在需要时将它们添加到某个随机目录中,并在应用程序找到它们时将其加载。@SamuelAudet在目标上添加了更多文本。我正试图让它尽可能简单地为消费者服务。如果你使用Maven,我们可以在构建时使用配置文件来更改依赖关系……我希望避免基于配置文件的选择,只需一次性构建。如果我不能以其他方式进行排序,那么配置文件绝对是一个有效的后备方案。