2016-04-13 13 views
1

Ich mag wäre besser, wie Maven beschäftigt sich mit Ressourcen verstehen und vor allem, wie Plugins die Resources Infrastruktur wiederverwenden können, die Maven bietet:Maven Ressourcen und Docker-Maven-Plugin

Ich habe bereits die Ressourcen Abschnitt Maven lesen und schaute auf die Maven Resources Plugin.

Jetzt stieß ich auf die Docker Maven Plugin von Spotify. Welche enthält den Abschnitt folgende Konfiguration:

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

im Blick Readme des Plugins ich keine Erklärung finden konnte, die untergeordneten Elemente für ein <resource> Element erlaubt sind. Ich gehe davon aus, dass das <resource> Element in der Tat zu Maven org.apache.maven.model.Resource Klasse verwandt ist und dass ich einfach die Dokumentation von Maven wiederverwenden kann, um zu verstehen, wer es funktioniert. Aber nach der Maven-Dokumentation, die ich oben verlinkt habe, scheint es, dass <include> Elemente innerhalb eines <includes> Elements verschachtelt sein müssen, was die obige Codeauflistung nicht tut. Jetzt bin ich verwirrt.

Zusammengefasst: Wo kann ich nach einer definitiven Antwort suchen, wenn ein Plugin nicht genau dokumentiert, wie seine Konfiguration funktioniert. Gibt es eine Art von XML-Schemareferenz für Plugins, wo ich nachsehen kann, wie bestimmte Elemente funktionieren?

Antwort

2

Ich glaube, Sie wollen configs setzen wie:

<dockerDirectory>src/main/docker</dockerDirectory> 
<dockerHost>https://192.168.99.100:2376</dockerHost> 
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 

diese, die Sie zum Beispiel durch folgende verwenden:

behebt dieses von:

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

Wichtig sind diese beiden Tags :

<dockerHost>https://192.168.99.100:2376</dockerHost> 
<dockerCertPath>/Users/your_user/.docker/machine/machines/default</dockerCertPath> 

Ich bin mit einem dockerfile, der Weg, den Sie mit diesem Tag definieren:

<dockerDirectory>src/main/docker</dockerDirectory> 

Jetzt können Sie Ihr Glas bauen und Docker Bild erzeugen über:

mvn Paket Docker:

+0

Ich brauchte bauen eine Möglichkeit, das eingebaute 'jar' artifect in das Docker-Image zu kopieren, ohne die Version innerhalb der' Dockerfile' hart zu codieren. Also habe ich in meinem 'src/main/docker/Dockerfile' 'ADD backend- @ project.version @ .jar app.jar' geschrieben und dann das Ressourcen-Plugin von Maven benutzt, um ein neues' docker/Dockerfile' in 'target' zu erstellen . Dies ergibt sich zum Beispiel in folgender Zeile in der finalen Dockerdatei: 'ADD backend-0.5.5.jar app.jar'. Ich habe '' auf: '$ {project.build.directory}/docker' gesetzt. Ohne diese Option müssten Sie Ihre Andockdatei jedes Mal berühren, wenn Sie die Versionsnummer Ihrer Software ändern. – lanoxx

Verwandte Themen