【问题标题】:Maven install 3rd party dependency in build processMaven 在构建过程中安装 3rd 方依赖项
【发布时间】:2015-10-16 08:37:53
【问题描述】:

我有一个需要安装的第 3 方依赖项 jar 才能构建我的项目。我知道这可以使用 install 命令完成,但我需要在构建项目时安装它。所以不需要手动安装jar,有没有办法呢?

我找到了这样的东西来安装插件

<configuration>
<executable>mvn</executable>
<arguments>
    <argument>install:install-file</argument>
    <argument>-Dfile=${basedir}\src\main\resources\EVIPSoapServer.jar</argument>
    <argument>-DgroupId=com.company</argument>
    <argument>-DartifactId=EVIPSoapServer</argument>
    <argument>-Dversion=1.0.0</argument>
    <argument>-Dpackaging=jar</argument>
</arguments>

有没有办法安装依赖项?

【问题讨论】:

  • 有什么原因不能离线安装这个依赖,然后在构建过程中使用它?
  • @TimBiegeleisen 可以做到,但我问这个只是为了维护。因此可以跳过手动安装依赖项的过程,在构建项目时,所有的 jar 都会自动安装。是否可以在 maven pom 配置中执行此操作?
  • Maven documentation 在这里似乎没有任何帮助。

标签: java maven installation maven-install-plugin


【解决方案1】:

更好的方法是创建一个多模块 maven 项目,将您的第三方库作为一个模块,将您的项目作为另一个模块。在根 pom.xml 中,您可以编写构建序列,这将负责在安装项目之前安装第三方 jar。

这是给你的教程Link 1

编辑

从评论看来,您似乎只需要在安装时使用依赖项 jar。为此,最好的方法是使用系统范围的依赖项,将第三方 jar 保存在 maven 项目结构本身的文件夹中。示例如下。阅读此link。这样,maven 将不会检查 jar 是否存在于本地或远程 maven repo 中。

    <dependency>
      <groupId>javax.sql</groupId>
      <artifactId>jdbc-stdext</artifactId>
      <version>2.0</version>
      <scope>system</scope>
      <systemPath>${your.path.here}</systemPath>
    </dependency>

【讨论】:

  • 那么我只有jar,是否可以将jar添加为模块?
  • 编辑了答案。您可以使用系统范围的依赖项。确保 jar 在您的项目中。 lib中的某个地方。
  • 我试过这个选项,在这个改变之后我的项目编译得很好。但在运行时它抛出异常,我得到 NoClassDefFoundError。我在这里做错了吗?
  • 我想你的项目是一个独立的应用程序?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2019-12-16
    • 2015-02-07
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多