【问题标题】:Maven build two runnable jars with different dependenciesMaven 构建两个具有不同依赖项的可运行 jar
【发布时间】:2017-05-18 19:30:31
【问题描述】:

在我由 Maven 构建的应用程序中,我有两个相互排斥的特定于平台的依赖项。在项目构建期间,我想构建两个可运行的 jar,其中一个 jar 包含一个依赖项,第二个 jar 包含另一个依赖项。

我的第一个想法是创建两个构建配置文件,每个配置文件都包含一个依赖项和 Maven 程序集或 Shade 插件来构建一个可运行的 jar。不幸的是,这似乎不起作用,因为只会构建一个罐子。我尝试在命令行 (-Pprofile1,profile2) 上启用两者,将 activeByDefault 都设置为 true 但仍然没有运气。

在我尝试通过创建两个项目子模块进行构建来解决它之前,有没有办法在同一个 Maven 项目中构建两个具有不同依赖项的可运行 jar?

【问题讨论】:

  • 您的两个配置文件的策略必须有效;如果只建造一个,那你就做错了。如果可能,显示带有设置的 pom.xml。顺便说一句,activeByDefault 标志有点古怪。也许您在两个配置文件中使用相同的 ID 来执行?
  • @Andrei 感谢您的确认 - 我会再做一次并仔细检查所有内容。
  • 不用担心;关于我对执行 ID 的评论:如果您只是在两个配置文件中声明插件(没有 èxecution 标签),那么我认为一个会覆盖另一个,因为它们都在执行 default-jar 上运行(我认为这是 ID默认执行)。如果是这种情况,那么只需声明两个单独的执行,每个配置文件中一个,确保指定不同的 ID。
  • 您对使用两个不同模块的想法是解决问题(关注点分离)的最佳和最干净的方法。配置文件最终将不起作用。要构建一个版本,您只需调用mvn clean deploy 并获取构建所需的一切。这只能使用两个模块设置。如果您使用配置文件,这个简单的调用将不起作用。

标签: maven maven-3 maven-assembly-plugin maven-shade-plugin


【解决方案1】:

对于那些感兴趣的人来说,使用两个独立的模块对我来说是最好的解决方案。有一个项目(“main”)包含所有代码。还有另外两个项目,每个项目都声明其特定平台和项目“主”所需的依赖项。然后每个项目为其平台构建一个可运行的 jar。

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2021-05-25
    • 2018-01-20
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多