2016-04-13 37 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