【问题标题】:How to stop Maven renaming installed jars如何停止 Maven 重命名已安装的 jar
【发布时间】:2010-03-02 15:40:31
【问题描述】:

我正在使用 mvn install:install 命令将我们的内部文件安装到 Maven 存储库。以这种方式安装的所有 Jars 都会自动添加版本名称作为后缀。由于我们有许多带有 Jars 名称的批处理脚本,这对我们来说非常不方便。如何关闭自动重命名?

【问题讨论】:

    标签: maven-2


    【解决方案1】:

    你不能。 Maven 中的依赖解析有效,因为 Maven 有约定,工件的命名就是其中之一。所以你不能关闭 maven install 工件的方式(而且你实际上不想这样做)。

    处理脚本 (bat/sh) 的常用方法是将它们放在源代码树中(例如,在 src/main/bin 中)并使用 assembly plugin 创建项目的分发版。在构建程序集时,您可以重命名工件、filter 分发文件等。这将是执行此类操作的正确位置。

    【讨论】:

      【解决方案2】:

      很想删除版本号,但我建议尽可能保留它。

      也许您可以使用Maven's resource filtering 功能来管理您的批处理脚本,而不是删除版本号? Maven 可以通过将 bat 脚本中的 ${project.version} 等占位符替换为 pom.xml 中的当前版本号来管理您的批处理脚本。这样,您可以确保批处理脚本正在运行正确(预期)版本的代码。

      您可能会强制 maven 部署一个没有版本的 jar,但如果您这样做,您将失去最初让 Maven 管理您的构建的一些主要好处,imo。例如,就在昨天,我被要求维护一个不受 maven 管理的 java 项目,其中包含 lib 目录中的一堆非版本化 jar 文件。没有办法知道这些罐子是从哪里来的。

      前面可能有点让人头疼,但如果你使用的是 maven,你不妨跳入 100%(再次,根据我的经验)。

      【讨论】:

      • 脚本(bat/sh)通常不是资源。
      • @Pascal Thivent,他们为什么不能呢?我使用将脚本放在目录名称脚本下的技术。然后我可以配置 Maven 资源过滤器来过滤脚本目录中的文件。效果很好。
      • 他们最终不会出现在目标/类中(这可能不是我们想要的)吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2016-01-09
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多