【问题标题】:Manifest classpath filter in maven-jar-pluginmaven-jar-plugin 中的清单类路径过滤器
【发布时间】:2019-08-27 11:23:10
【问题描述】:

我可以从 <addClasspath>true</addClasspath> 选项生成的类路径中排除一些工件吗?

比如我有一些依赖:

<dependency>
  <groupId>com.group1</groupId>
  <artifactId>lib11</artifactId>
  <version>1.0</version>
</dependency>

<dependency>
  <groupId>com.group1</groupId>
  <artifactId>lib12</artifactId>
  <version>1.0</version>
</dependency>

<dependency>
  <groupId>com.group2</groupId>
  <artifactId>lib21</artifactId>
  <version>1.0</version>
</dependency>

现在,我在 MANIFEST.MF 中的类路径条目是:

Class-Path: lib/lib11.jar lib/lib12.jar lib/lib21.jar

我想排除我的依赖项列表中的一些 groupIds 并以这种形式输入:

Class-Path: lib/lib21.jar

我该怎么做?

【问题讨论】:

  • 顺便说一句:你用Class-Path做什么?
  • @JFMeier 我使用类路径在我的可运行 jar 中指定所有使用的库和其他应用程序模块。生产阶段的一些模块位于另一个目录而不是 lib。我禁用了将此依赖项复制到 lib 目录并在类路径中手动指定它们。我想从 lib\lib11.jar 之类的类路径条目中删除,因为已经使用正确的路径手动定义它,例如没有前缀的 lib11.jar。
  • 有趣...我认为现在人们使用胖罐子。或者应用服务器中的战争/耳朵。
  • @JFMeier 这不是一个胖罐子。所有依赖项都位于 jar 之外。它是一个桌面 javafx 应用程序。

标签: java maven maven-jar-plugin


【解决方案1】:

当将标签 scope 与值 provided 添加到不必要的依赖项时,它们会根据需要从类路径中消失。 以问题为例:

<dependency>
  <groupId>com.group1</groupId>
  <artifactId>lib11</artifactId>
  <version>1.0</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>com.group1</groupId>
  <artifactId>lib12</artifactId>
  <version>1.0</version>
  <scope>provided</scope>
</dependency>

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2018-04-10
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多