2016-04-13 2 views
1

Я хотел бы, чтобы лучше понять, как Maven сделок с ресурсами и, в частности, как модули могут повторно использовать Resources инфраструктуру, Maven обеспечивает:Maven Ресурсы и докер-Maven-плагин

Я уже прочитал в разделе Ресурсы Maven и посмотрел на Maven Resources Plugin.

Теперь я наткнулся на Docker Maven Plugin от Spotify. Который содержит следующий раздел конфигурации:

<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 для плагинов, где я могу найти, как работают определенные элементы?

ответ

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> 

Теперь вы можете создать свою баночку и генерировать Docker изображение с помощью:

MVN пакет докер: построить

+0

мне нужно способ скопировать встроенный «jar» artifect в изображение докера без жесткого кодирования версии внутри «Dockerfile». Поэтому в моем 'src/main/docker/Dockerfile' я написал:« ADD backend- @ project.version @ .jar app.jar', а затем использовал плагин ресурсов Maven для создания нового 'docker/Dockerfile' в' target' , Это приводит, например, к следующей строке в финальном файле Docker: 'ADD backend-0.5.5.jar app.jar'. Я установил '' для: '$ {project.build.directory}/docker'. Без этого вам нужно будет прикоснуться к файлу докеров каждый раз, когда вы набросаете номер версии вашего программного обеспечения. – lanoxx

Смежные вопросы