Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Docker自动构建从Maven Sonatype Nexus存储库下载私有JAR_Java_Maven_Docker_Nexus_Continuous Deployment - Fatal编程技术网

Java Docker自动构建从Maven Sonatype Nexus存储库下载私有JAR

Java Docker自动构建从Maven Sonatype Nexus存储库下载私有JAR,java,maven,docker,nexus,continuous-deployment,Java,Maven,Docker,Nexus,Continuous Deployment,我正在建设一条发展管道。Docker映像将在java应用程序的成功测试版本部署到私有Maven存储库(Sonatype Nexus)后自动创建 一旦我的应用程序成功构建,我需要在某处发布它,Docker需要有权下载它并创建一个容器 我想Docker可以访问NexusMaven存储库,但我没有发现如何从私有存储库下载jar。我在Nexus文档中没有找到如何传递身份验证参数以访问私有URL。有人知道吗 PS:我也接受一些更简单的解决方案的建议来完成这项工作。我刚刚发现我可以用cURL来完成。例如:

我正在建设一条发展管道。Docker映像将在java应用程序的成功测试版本部署到私有Maven存储库(Sonatype Nexus)后自动创建

一旦我的应用程序成功构建,我需要在某处发布它,Docker需要有权下载它并创建一个容器

我想Docker可以访问NexusMaven存储库,但我没有发现如何从私有存储库下载jar。我在Nexus文档中没有找到如何传递身份验证参数以访问私有URL。有人知道吗


PS:我也接受一些更简单的解决方案的建议来完成这项工作。

我刚刚发现我可以用cURL来完成。例如:

curl -u username:password -o myapp.war "http://nexus.mycompany.com/service/local/artifact/maven/redirect?r=snapshots&g=com.company&a=MyApp&v=1.0-SNAPSHOT&p=war" -L
其中de
-L
标志用于重定向(301响应)

因此,在docker compose.yml中,我有一行代码如下:

RUN curl -u username:password -o myapp.war "http://nexus.mycompany.com/service/local/artifact/maven/redirect?r=snapshots&g=com.company&a=MyApp&v=1.0-SNAPSHOT&p=war" -L

如果您使用的是maven

mvn dependency:copy -Dartifact=groupId:artifactId:version[:packaging][:classifier] -DoutputDirectory=[target] -Dusername=[username] -Dpassword=[password]

您所说的私有存储库是什么意思?您在构建时是否可以从Docker访问它?它是一个私有的Sonatype Nexus存储库。需要用户和密码才能访问它。问题,它在输出文件中的什么位置?我想这样做:运行curl-o/“”-L将jar下载到我的docker映像的根目录下吗?在docker文件中放置密码不是一个坏主意吗?您可以使用环境变量来存储凭据。您还可以在docker构建过程中传递用户名和密码,如下所示:--build arg username=johndoe--build arg password=pass@123并在Dockerfile如下:ARG用户名ARG密码