Maven资源和docker-maven-plugin

时间:2016-04-13 12:06:35

标签: maven maven-resources-plugin

我想更好地了解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模式参考,我可以在其中查找特定元素的工作方式?

1 个答案:

答案 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