【问题标题】:Specify systemPath to dependency outside pom.xml指定 pom.xml 外部依赖的 systemPath
【发布时间】:2018-04-18 21:40:39
【问题描述】:

问题:我的软件使用了每个开发人员(和用户)都安装在不同位置的库。

以下作品在pom.xml:

<project ...>
    ...
    <dependencies>
        <dependency>
            <groupId>myGroup</groupId>
            <artifactId>myName</artifactId>
            <version>1.2.3</version>
            <scope>system</scope>
            <systemPath>C:\...\....jar</systemPath>
        </dependency>
    </dependencies>
</project>

但是当我将它检查到源代码控制中时,每个需要更改它的开发人员都必须更改 pom.xml,因此必须在之后的每次提交时忽略它,或者如果他必须更改其中的任何其他内容,则必须部分提交pom.xml,比如添加另一个依赖。

  1. 使用属性没有帮助,它只是将问题转移到pom.xml 内的另一个位置。

  2. 使用属性并从外部文件 (properties-maven-plugin) 读取它似乎不起作用,因为该插件在 的依赖项检查之后被调用,例如日食:Dynamically adding a Maven dependency from a property

  3. 使用环境变量${env.MY_VARIABLE} 似乎也不起作用:[ERROR] 'dependencies.dependency.systemPath' for myGroup:myName:jar must specify an absolute path but is ${env.MY_VARIABLE} @line 123, column 45

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 你走错了方向。 &lt;scope&gt;system&lt;/scope&gt; 是您很可能不应该使用的东西,并且有一天会被删除。请参阅stackoverflow.com/questions/364114/… 了解正确方法。
  • 这不是我的 jar,所以我不能将它与我的应用程序一起分发。 jar 受到严格保护,因此我无法将它添加到本地存储库、处理它甚至移动它——它必须放在键盘前的人安装它的地方。如果没有&lt;scope&gt;system&lt;/scope&gt;,我看不出有任何解决方法。还是在您的链接页面上我没有得到任何内容?
  • jar 受到严格保护,所以我无法将其添加到本地存储库 为什么不呢?现在,您的本地存储库中可能有数千个 JAR 不是您的,而是从其他 Maven 存储库下载的。这个特定的在远程存储库中不可用,但这并不意味着您不能安装它。
  • 可以将它添加到本地存储库,但即使它与包含的加密/混淆/xyz 一起使用,也只能解决我的问题。从 VCS 检查我的项目的其他人都必须执行相同的步骤 - 每次更新第三方 jar 时都必须执行这些步骤,而且它经常这样做。
  • 然后您需要开始研究存储库管理器,例如 Artifactory 或 Nexus。您可以在那里托管 JAR,每个开发人员都可以从那里下载它而不会出现问题。它被加密的事实无关紧要,它只是一个和其他 JAR 一样的 JAR。

标签: java eclipse maven


【解决方案1】:

【讨论】:

  • (复制自我对@Tunaki 评论的回复)这不是我的 jar,所以我无法将它与我的应用程序一起分发。 jar 受到严格保护,因此我无法将其添加到本地存储库、处理它甚至移动它——它必须放在键盘前的人安装它的位置。
【解决方案2】:

这个选项对我有用:

3. Using environment variables ${env.MY_VARIABLE} seems not to work either: [ERROR] 'dependencies.dependency.systemPath' for myGroup:myName:jar must specify an absolute path but is ${env.MY_VARIABLE} @line 123, column 45

您必须将 jar 名称包含在路径中,例如,${env.MY_VARIABLE/my_jar.jar}。 还要确保您的环境中存在MY_VARIABLE。 最后执行mvn cleanmvn compile 命令

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2023-04-06
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多