【发布时间】:2017-04-23 03:19:57
【问题描述】:
我有一个具有以下概念结构的项目:
-- Core project: Contains the main() function
---- Feature A
---- Feature B
---- Feature C
---- etc.
我正在寻找一种方法来告诉 maven 以下内容:
mvn package core--with--featureA--and--featureC
此示例将从 Core 的 main 开始创建一个可执行 JAR 文件,并且还打包/组装了功能 A 和 C,但不包括功能 B 和其他功能。
当 JAR 启动时,main 方法应该能够知道安装了哪些功能并引导它们,例如:
main() {
for(Runnable featureStarter : FeatureList.getFeatures()) { // Gets all features assembled by maven, which are now present in runtime
featureStarter.run(); // Starts each feature
}
}
或者,一个更质朴/硬编码的例子(不太喜欢):
main() {
if(isInstalled("FeatureA"))
FeatureA.start();
if(isInstalled("FeatureB"))
FeatureB.start();
if(isInstalled("FeatureC"))
FeatureC.start();
}
这有可能吗?
谢谢!
【问题讨论】:
-
您是在寻找在不同环境下运行的 jar 还是仅在一个 jar 中会检测到缺失的依赖项并禁用某个功能
-
Maven 有项目,然后是模块。所以你可以创建 2 个依赖于基础项目的发布模块。每个都会以不同的方式组装,这取决于您的主要功能来检查功能中缺少的类并禁用或启用该功能
-
与环境无关,更像是依赖。我认为我们可以将功能视为依赖项。我不知道,这会是使用 maven 实现这一目标的最佳方式吗?
-
我明白了。我将尝试找到一个使用发布模块的示例。
-
当你想过滤stackoverflow.com/questions/2424015/…时,这个问题可能会为 maven 的工作方式提供一些额外的信息
标签: java maven maven-2 maven-3 maven-assembly-plugin