【问题标题】:How to include external library for maven on CircleCI如何在 CircleCI 上包含 Maven 的外部库
【发布时间】:2017-01-31 02:25:42
【问题描述】:

我正在使用 circleCI 进行使用 maven 构建的 webapp 的持续集成。我想让 maven 在 CircleCI 上运行测试和构建时使用外部库。
由于该库只有一个较大的父 maven 项目中的兄弟项目的工件,因此我可以在本地环境中毫无问题地构建此项目,因为我已经将它作为依赖项添加到我的 pom.xml 中。
我尝试使用下面的 circle.yml 和 bash 文件手动将构建的 jar 文件添加到 M2_HOME 中。

circle.yml:

#...
dependencies:
    pre:
        - sudo chmod a+x add_dependencies.sh
        - ./add_dependencies.sh
#...

add_dependencies.sh:

sudo wget http://my.jar.file.url -O exteral_lib.jar --quiet
sudo mkdir -p ${HOME}/.m2/repository/com/group/artifact/1.0.0/
sudo cp -rl ./exteral_lib.jar ${HOME}/.m2/repository/com/group/artifact/1.0.0/exteral_lib.jar
sudo rm -f ./exteral_lib.jar

但它没有用。

Failed to create parent directories for tracking file, 
Non-resolvable import POM: Could not transfer artifact 

当 CircleCI 试图解决依赖关系时发生。

我该如何解决这个问题?

【问题讨论】:

    标签: java maven circleci


    【解决方案1】:

    您可以尝试安装它,而不是将 jar 复制到存储库:

    mvn install:install-file -DgroupId=<your group id> -DartifactId=<your artifact id> -Dversion=<your version id> -Dpackaging=jar -Dfile=<your jar filename> -DgeneratePom=true
    

    例子:

    mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.2 -Dpackaging=jar -Dfile=sqljdbc.jar -DgeneratePom=true
    

    【讨论】:

    • 您好,非常感谢。我尝试了您的解决方案并且该库似乎已安装,但在运行单元测试时出现java.lang.NoClassDefFoundError: com/google/gson/JsonIOException 错误。 Gson 在库中使用,并且已经包含在其 pom.xml 文件中作为具有编译范围的依赖项,因此我无法找出发生此错误的原因。我还尝试了提到here 的maven-assembly-plugin,但没有运气。我错过了什么或库没有正确安装?
    • 哦,这只是另一个问题,现在已经解决了。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多