【问题标题】:I want to load all JARs from my libs project folder with Maven我想使用 Maven 从我的 libs 项目文件夹中加载所有 JAR
【发布时间】:2018-07-17 20:48:48
【问题描述】:

我有一个使用 Maven 的 Java 项目。在我的项目中,我有一个名为 libs 的文件夹,其中包含我无法从 Internet/外部存储库加载的所有 JAR。

我的问题是如何指定 Maven 在打包、构建等过程中包含这些 JAR?

Maven 新手,如果这是一个愚蠢的问题,请见谅。

编辑:我有一个自动工具,可以在我的 Git 上查看我的 pom.xml,以在不同的环境中构建和部署我的项目。因此,按照here 的建议将其添加到本地 Maven 存储库中将无济于事,因为它仅适用于我的 PC。如果我在我的 JAR 中添加一个 libs 文件夹,无论我在哪里,它都可以工作。

如果不清楚或我弄错了,请在 cmets 中问我。

【问题讨论】:

  • 这不是Maven应该做的工作。只需将这些 JAR 包含在您的类路径中即可。
  • @Generic 这会将本地 JAR 添加到您的 maven 本地存储库中,但这不是我想要做的。
  • @Mick 我同意,但是例如我将我的代码放在 GIT 上,并将我的外部 JAR 放在 lib 中,如果有人拿走代码,他将不得不再次设置类路径对吗?我有一个使用 Maven 构建和部署我的项目的自动工具,如果我没记错的话,只有在本地使用 Eclipse 才能设置类路径?

标签: java maven deployment build dependencies


【解决方案1】:

与您的编辑相反,添加到本地 Maven 存储库帮助,它可以自动如下:

  • 参见jtahlborn's answerMultiple install:install-file in a single pom.xml。 (maven-install-plugin 的当前版本是 2.5.2。我会使用它而不是默认版本。)
  • <configuration>s 应该如下所示:

      <configuration>
        <file>${project.basedir}/path/to/your/libs/lib-X.jar</file>
        <repositoryLayout>default</repositoryLayout>
    
        <!-- match the dependency declaration for this artifact -->
        <groupId>logan.wlv</groupId>
        <artifactId>lib-X</artifactId>
        <version>x.y.z</version> 
        <packaging>jar</packaging>
        <!-- -------------------------------------------------- -->
      </configuration>
    
  • install-plugin 声明放入build profile,例如lib

  • 在每台新 PC 上运行一次 mvn initialize -P lib(在 libs 的内容之后运行一次,因此 install-plugin 声明已更改),然后再调用任何首先解决依赖关系的阶段,例如compile.

  • 通过以下方式进一步自动化:

      <profile>
        <id>lib</id>
        <activation>
          <file>
            <missing>${settings.localRepository}/logan/wlv/lib-X/x.y.z/lib-X-x.y.z.jar</missing>
          </file>
        </activation>
        ...
      <profile>
    

    这样就可以运行mvn initialize,而无需第一次显式激活配置文件。

【讨论】:

  • 你知道&lt;settings&gt;&lt;LocalRepository&gt;... 可能指向别处吗?
  • 另外,在每台新 PC 上执行一次 install:install-file 命令的 shell 脚本与在每台新 PC 上运行一次 mvn initialize -P lib 非常相似。
  • @ThorbjørnRavnAndersen 我知道。虽然从默认值更改不是很常见(Convention over configuration! ;)你是对的。 ${settings.localRepository} 也应该可以工作(我从未使用过或尝试过),而且更通用。感谢您的提示。
  • @ThorbjørnRavnAndersen 与在同一个 POM 中包含所有相关信息并能够使用众所周知的 mvn ... 执行它相比,引入一个包含 all the install-file arguments 的额外脚本文件有什么意义?命令?
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多