2016-04-13 38 views
1

我想更好地了解如何Maven的涉及资源,特别插件如何可以重用Resources基础设施,Maven提供:Maven的资源和泊坞窗 - Maven的插件

我已经阅读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> 

望着插件我找不到其子元素允许一个<resource>元素的任何解释的Readme我假设<resource>元素实际上与Maven的org.apache.maven.model.Resource类有关,我可以重复使用Maven的文档来了解它的工作原理。但根据我上面链接的Maven文档,看起来<include>元素必须嵌套在<includes>元素中,而上面的代码清单并没有这样做。现在我很困惑。

总结:如果插件没有完全记录它的配置如何工作,我在哪里可以得到明确的答案。是否存在某种插件的XML模式引用,我可以在其中查找特定元素的工作方式?

回答

2

我想你想设置像CONFIGS:

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

现在你可以建立自己的罐子,并产生泊坞窗图像通过:

MVN包泊坞窗:建立

+0

我需要一种将构建的'jar' artifect复制到Docker镜像中的方法,不需要对'Dockerfile'中的版本进行硬编码。因此,在我的src/main/docker/Dockerfile中,我写道:“ADD backend- @ project.version @ .jar app.jar”,然后使用Maven资源插件在'target'中创建一个新的'docker/Dockerfile' 。这导致例如在最终的Dockerfile中的以下行:'ADD backend-0.5.5.jar app.jar'。我已将''设置为:'$ {project.build.directory}/docker'。没有这些,每次碰到软件的版本号时都需要触摸docker文件。 – lanoxx