Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么docker maven插件无法选择正确的jar文件以包含在docker映像中?_Java_Maven_Docker_Maven Docker Plugin - Fatal编程技术网

Java 为什么docker maven插件无法选择正确的jar文件以包含在docker映像中?

Java 为什么docker maven插件无法选择正确的jar文件以包含在docker映像中?,java,maven,docker,maven-docker-plugin,Java,Maven,Docker,Maven Docker Plugin,就我所了解的构建流程而言: maven汇编插件builds/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar maven-jar-plugin构建/target/my-artifact-1.0-SNAPSHOT.jar(不确定我们为什么需要它) docker maven插件假设artifact with dependencies/target/my-artifact-1.0-SNAPSHOT-jar-with-dependenci

就我所了解的构建流程而言:

  • maven汇编插件
    builds
    /target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar

  • maven-jar-plugin
    构建
    /target/my-artifact-1.0-SNAPSHOT.jar
    (不确定我们为什么需要它)

  • docker maven插件
    假设
    artifact with dependencies
    /target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar

  • 然而,出于某种原因,它拾起了错误的罐子工艺品

    我错过了什么?如何让它工作

    pom.xml

    <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.20.1</version>
        <extensions>true</extensions>
        <configuration>
            <images>
                <image>
                    <name>my-artifact</name>
                    <build>
                        <from>java:8-jre</from>
                        <volumes>
                            <volume>/target</volume>
                        </volumes>
                        <entryPoint>
                            <exec>
                                <arg>java</arg>
                                <arg>-jar</arg>
                                <arg>/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar</arg>
                            </exec>
                        </entryPoint>
                        <assembly>
                            <descriptorRef>artifact-with-dependencies</descriptorRef>
                            <targetDir>/target</targetDir>
                            <mode>dir</mode>
                            <!--<basedir>/target</basedir>-->
                        </assembly>
                    </build>
                </image>
            </images>
        </configuration>
        <executions>
            <execution>
                <id>docker-build</id>
                <goals>
                    <goal>build</goal>
                </goals>
            </execution>
            <execution>
                <id>docker:start</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start</goal>
                </goals>
            </execution>
            <execution>
                <id>docker:stop</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <id>create-archive</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>Client</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass>Client</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    
    
    io.fabric8
    docker maven插件
    0.20.1
    真的
    我的神器
    java:8-jre
    /目标
    JAVA
    -罐子
    /target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar
    具有依赖项的工件
    /目标
    迪尔
    码头工人建造
    建造
    码头工人:开始
    预集成测试
    开始
    码头工人:停下
    整合后测试
    停止
    maven汇编插件
    创建存档
    包裹
    单一的
    客户
    带有依赖项的jar
    org.apache.maven.plugins
    maven jar插件
    3.1.1
    真的
    解放党/
    客户
    
    引用文档:

    具有依赖项的工件
    
    将使用名称添加创建的工件 ${project.build.finalName}.${artifact.extension}和所有jar targetDir中的依赖项(默认情况下为/maven)

    这不是你想要的

    我认为您想要的是将程序集自定义为以下内容:

    <assembly>
     <targetDir>/target</targetDir>
     <inline>
        <fileSets>
          <fileSet>
            <directory>${project.basedir}/target/</directory>
            <outputDirectory>.</outputDirectory>
            <includes>
                 <include>project-name-version-classifier-jar-with-dependencies.jar</include> 
             </includes>
             </fileSet>
           </fileSets>
         </inline>
       </assembly>
    
    ,如果您正在为Java项目构建映像,它可能更适合您的需要

    <assembly>
     <targetDir>/target</targetDir>
     <inline>
        <fileSets>
          <fileSet>
            <directory>${project.basedir}/target/</directory>
            <outputDirectory>.</outputDirectory>
            <includes>
                 <include>project-name-version-classifier-jar-with-dependencies.jar</include> 
             </includes>
             </fileSet>
           </fileSets>
         </inline>
       </assembly>