Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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 Maven:自动安装外部JAR_Java_Docker_Maven_Jar - Fatal编程技术网

Java Maven:自动安装外部JAR

Java Maven:自动安装外部JAR,java,docker,maven,jar,Java,Docker,Maven,Jar,我的项目依赖于oraclejar来连接到它的数据库。因为它是一个外部jar,所以我从oracle网站下载并使用 mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar 在本地运行maven clean package运行良好,因为已经安装了ojdbc.jar 但是,现在我将build步骤移动到Docker图像 fr

我的项目依赖于
oracle
jar来连接到它的数据库。因为它是一个外部jar,所以我从oracle网站下载并使用

mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
在本地运行
maven clean package
运行良好,因为已经安装了
ojdbc.jar

但是,现在我将
build
步骤移动到
Docker
图像

from alpine/git as clone
workdir /app
run git clone --single-branch -b master https://github.com/xxxxxxxx

from maven:3.5-jdk-8-alpine
workdir /app
copy --from=0 /app/idot/idot-backend /app
run mvn clean install -T 1C -DskipTests

from openjdk:8-jre-alpine
workdir /app
copy --from=build /app/target/idot-0.0.1-SNAPSHOT.jar /app
cmd ["java -jar idot-0.0.1-SNAPSHOT.jar"]
由于外部jar不存在,因此在
构建期间,此步骤显然失败。因此,为了删除依赖关系,我编辑了
pom.xml
以包括

<repositories>
        <repository>
            <id>local-maven-repo</id>
            <url>file://${project.basedir}/libs</url>
        </repository>
</repositories>
这将创建一个包含
ojdbc8-12.2.0.1.jar
和其他元信息的
libs
文件夹。我在
github

现在,当尝试构建
docker
映像时,它失败了,并显示以下错误消息

。。。 ... . .

。 .

。 .


我在
docker
文件中添加了相同的安装命令,而不是所有的麻烦。它现在运行良好

from alpine/git as clone
workdir /app
run git clone --single-branch -b master https://@github.com/xxxx

from maven:3.5-jdk-8-alpine
workdir /app
copy --from=0 /app/idot/idot-backend /app
run mvn install:install-file -Dfile=/app/ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
run mvn clean install -T 1C -DskipTests

from openjdk:8-jre-alpine
workdir /app
copy --from=build /app/target/idot-0.0.1-SNAPSHOT.jar /app
cmd ["java -jar idot-0.0.1-SNAPSHOT.jar"]

我在
docker
文件中添加了相同的安装命令,而不是所有的麻烦。它现在运行良好

from alpine/git as clone
workdir /app
run git clone --single-branch -b master https://@github.com/xxxx

from maven:3.5-jdk-8-alpine
workdir /app
copy --from=0 /app/idot/idot-backend /app
run mvn install:install-file -Dfile=/app/ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
run mvn clean install -T 1C -DskipTests

from openjdk:8-jre-alpine
workdir /app
copy --from=build /app/target/idot-0.0.1-SNAPSHOT.jar /app
cmd ["java -jar idot-0.0.1-SNAPSHOT.jar"]

我用了同样的方法,它对我很有效。你可以在这里看到

<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.4.2-SNAPSHOT</version>
    </dependency>
</dependencies>
        
<repositories>
    <repository>
        <id>maven-repository</id>
        <url>file:///${project.basedir}/repo</url>
    </repository>
</repositories>

mvn deploy:deploy-file -Durl="file:\\\<project-path>\repo" -Dfile=Java-WebSocket-1.4.2-SNAPSHOT.jar -DgroupId=org.java-websocket -DartifactId=Java-WebSocket -Dpackaging=jar -Dversion=1.4.2-SNAPSHOT

org.java-websocket
Java WebSocket
1.4.2-快照
maven存储库
文件://${project.basedir}/repo
mvn部署:部署文件-Durl=“file:\\\\repo”-Dfile=Java-WebSocket-1.4.2-SNAPSHOT.jar-DgroupId=org.Java-WebSocket-DartifactId=Java-WebSocket-dpackage=jar-Dversion=1.4.2-SNAPSHOT

我使用了同样的方法,它对我很有效。你可以在这里看到

<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.4.2-SNAPSHOT</version>
    </dependency>
</dependencies>
        
<repositories>
    <repository>
        <id>maven-repository</id>
        <url>file:///${project.basedir}/repo</url>
    </repository>
</repositories>

mvn deploy:deploy-file -Durl="file:\\\<project-path>\repo" -Dfile=Java-WebSocket-1.4.2-SNAPSHOT.jar -DgroupId=org.java-websocket -DartifactId=Java-WebSocket -Dpackaging=jar -Dversion=1.4.2-SNAPSHOT

org.java-websocket
Java WebSocket
1.4.2-快照
maven存储库
文件://${project.basedir}/repo
mvn部署:部署文件-Durl=“file:\\\\repo”-Dfile=Java-WebSocket-1.4.2-SNAPSHOT.jar-DgroupId=org.Java-WebSocket-DartifactId=Java-WebSocket-dpackage=jar-Dversion=1.4.2-SNAPSHOT

您需要使用Dockerfile中的copy语句在mvn构建路径中复制ojdbc jar。为什么上述操作失败,它在local上有效,而在local上有效,因为您手动下载了文件(这基本上是Docker中的复制步骤)。然后通过maven install:installfile将ojdbc jar提供给project。另外,由于您有本地mvn存储库设置,jar将在以下位置可用:
${project.basedir}/libs
。但是这是您的本地版本,如果您也提交了
${project.basedir}/libs
,那么这会起作用,我认为情况并非如此。您需要理解存储库的概念,而且Docker构建没有对您放入jar的构建的访问权限,除非您明确告诉它如何操作。@Saurabh如前所述,我也提交了
${project.basedir}/libs
文件夹。它显示了提交文件夹的错误消息。您需要使用Dockerfile中的copy语句在mvn构建路径中复制ojdbc jar。为什么上述操作失败,它在localIt上工作,在local上工作,因为您手动下载了文件(这基本上是Docker中的复制步骤)。然后通过maven install:installfile将ojdbc jar提供给project。另外,由于您有本地mvn存储库设置,jar将在以下位置可用:
${project.basedir}/libs
。但是这是您的本地版本,如果您也提交了
${project.basedir}/libs
,那么这会起作用,我认为情况并非如此。您需要理解存储库的概念,而且Docker构建没有对您放入jar的构建的访问权限,除非您明确告诉它如何操作。@Saurabh如前所述,我也提交了
${project.basedir}/libs
文件夹。它将显示带有已提交文件夹的错误消息。
  Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/20.0/guava-20.0.jar (2.4 MB at 12 kB/s)
    Downloaded from central: https://repo.maven.apache.org/maven2/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.jar (2.9 MB at 14 kB/s)
    Downloaded from central: https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.9.12/byte-buddy-1.9.12.jar (3.3 MB at 14 kB/s)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 07:13 min (Wall Clock)
    [INFO] Finished at: 2020-06-17T11:19:56Z
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project idot: Could not resolve dependencies for project com.novartis:idot:jar:0.0.1-SNAPSHOT: Could not find artifact com.oracle:ojdbc8:jar:12.2.0.1 in local-maven-repo (file:///app/libs) -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
    The command '/bin/sh -c mvn clean install -T 1C -DskipTests' returned a non-zero code: 1
from alpine/git as clone
workdir /app
run git clone --single-branch -b master https://@github.com/xxxx

from maven:3.5-jdk-8-alpine
workdir /app
copy --from=0 /app/idot/idot-backend /app
run mvn install:install-file -Dfile=/app/ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
run mvn clean install -T 1C -DskipTests

from openjdk:8-jre-alpine
workdir /app
copy --from=build /app/target/idot-0.0.1-SNAPSHOT.jar /app
cmd ["java -jar idot-0.0.1-SNAPSHOT.jar"]
<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.4.2-SNAPSHOT</version>
    </dependency>
</dependencies>
        
<repositories>
    <repository>
        <id>maven-repository</id>
        <url>file:///${project.basedir}/repo</url>
    </repository>
</repositories>

mvn deploy:deploy-file -Durl="file:\\\<project-path>\repo" -Dfile=Java-WebSocket-1.4.2-SNAPSHOT.jar -DgroupId=org.java-websocket -DartifactId=Java-WebSocket -Dpackaging=jar -Dversion=1.4.2-SNAPSHOT