如何在 CircleCI 上包含 maven 的外部库

How to include external library for maven on CircleCI

我正在将 circleCI 用于一个使用 maven 构建的 webapp 的持续集成。 运行 在 CircleCI 上测试和构建时,我想让 maven 使用外部库。
由于该库只有一个较大的父 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 尝试解决依赖关系时发生。

我该如何解决这个问题?

您可以尝试安装它,而不是将 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