我想更好地了解Maven如何处理资源,特别是插件如何重用Maven提供的Resources
基础架构:
我已阅读Maven的资源部分并查看了Maven Resources Plugin。
现在我遇到了Spotify的Docker Maven Plugin。其中包含以下配置部分:
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
查看插件的Readme,我无法找到<resource>
元素允许哪些子元素的任何解释。 我假设 <resource>
元素实际上与Maven的org.apache.maven.model.Resource
类相关,我可以重用Maven的文档来了解它的工作原理。但是根据我上面链接的Maven文档,似乎<include>
元素必须嵌套在<includes>
元素中,而上面的代码清单并没有这样做。现在我很困惑。
总结一下:如果插件没有准确记录其配置的工作原理,我在哪里可以获得明确的答案。是否存在某种插件的XML模式参考,我可以在其中查找特定元素的工作方式?
答案 0 :(得分:2)
我想你想设置像:
这样的配置<dockerDirectory>src/main/docker</dockerDirectory>
<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
您可以使用以下内容:
解决了这个问题:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>yourImageName</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
重要的是这两个标签:
<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath>
我正在使用dockerfile,您必须使用此标记定义该路径:
<dockerDirectory>src/main/docker</dockerDirectory>
现在您可以通过以下方式构建jar并生成docker镜像:
mvn包docker:build