依赖于私有仓库nexus 改为使用默认或者阿里镜像打包运行

简介: 将之前项目依赖于私有仓库nexus 改为使用默认或者阿里镜像打包运行。将本地开发环境移动到云上。Q:是问题A:是回答T:是拓展

今天的工作任务

将之前项目依赖于私有仓库nexus 改为使用默认或者阿里镜像打包运行。

将本地开发环境移动到云上。

Q: 如何判断已经使用私有仓库,并且更改了groupId 、artifactId及version 的jar,应该替换成哪个jar呢?

A: 首先通过查看本地的Maven repository 地址,找到私有云加载到本地的jar资源,如:xxx/com/xxxx。目录结构,之后再到对应的jar文件,进行解压。查看META-INF(这个目录是Maven打包生成的)目录下找到pom.properties。其中就有对应真实的groupId等信息。

在上maven repository 网站找到对应的,依赖配置文件,进行替换就可以了。

刚刚说的是开源文件从私有仓库,替换为公共镜像地址的流程。

如果是私有jar,只能通过项目引用的方式进行了。

通过添加对应scope 和systemPath标签可以进行引用。

<dependency>
            <groupId>com.zuifuli</groupId>
            <artifactId>icare-open-sdk</artifactId>
            <version>1.2.3</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/icare-open-sdk-1.2.3.jar</systemPath>
</dependency>

还有一种方式

mvn install:install-file -DgroupId=com.test -DartifactId=juint -Dversion=1.0.0 -Dpackaging=jar -Dfile=juint.jar

这种方式个人觉得,如果依赖多的话 还需要经常操作。比较麻烦就没有尝试使用。

Q:使用第二种更改配置的方法 可能会出现java.lang.NoClassDefFoundError问题

A: 原因是scope 使用范围的问题:

Untitled.png

maven打war包 可以使用

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${project.basedir}/libs</directory>
                            <targetPath>WEB-INF/libs</targetPath>
                            <filtering>true</filtering>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

jar 包的话 可以使用:

<resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <!-- <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource> -->
</resources>

Q: Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/icare-open-sdk-1.2.3.jar

A: 是因为这个jar 存在问题,导致无法加载

T:Spring Boot 通过Maven 打包生成的jar包,结构中目前包括三个目录:

  • org 这个目录是Spring 加载jar和class文件使用的,通过java -jar 运行,现执行其中的class文件 ,其中的JarFile,JarEntry.. 默认加载BOOT-INT/lib 其中的jar 依赖 和BOOT-INT/class 项目文件
  • BOOT-INF:存在源文件和项目依赖的jar
  • META-INF:maven打包生成的一些配置文件

Q: 为什么通过添加Maven配置,打入BOOT-INF/lib jar 变大了呢?并且无法正常解压使用(265kb-488kb)

<dependency>
            <groupId>com.zuifuli</groupId>
            <artifactId>icare-open-sdk</artifactId>
            <version>1.2.3</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/icare-open-sdk-1.2.3.jar</systemPath>
</dependency>
<resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <!-- <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource> -->
</resources>

A: 这个问题没有继续探索,而是了一种加载本地资源的方式 。这次成功运行了。

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
<!-- 这个plugin 是我添加的 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <!-- <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                <compilerArguments>
                    <extdirs>${project.basedir}/src/main/resources</extdirs>
                </compilerArguments>
                </configuration>
            </plugin> -->
</plugins>
目录
相关文章
|
11月前
|
存储 Docker 容器
企业实战(6)修改Harbor镜像仓库默认存储路径
企业实战(6)修改Harbor镜像仓库默认存储路径
255 0
|
11月前
|
存储 Docker 容器
Docker安装默认存储路径修改与镜像恢复
Docker安装默认存储路径修改与镜像恢复
295 0
|
19天前
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
79 2
|
4月前
|
算法 Docker Python
Python【算法中心 04】Docker镜像制作的两种方式代码内置与代码挂载(部署简单和避免修改Docker内文件的权衡)
Python【算法中心 04】Docker镜像制作的两种方式代码内置与代码挂载(部署简单和避免修改Docker内文件的权衡)
112 0
|
Java Maven
IDEA Maven 源修改为国内阿里云镜像的正确方式, 2023 年更新,亲测可用
IDEA Maven 源修改为国内阿里云镜像的正确方式, 2023 年更新,亲测可用
31114 1
|
11月前
|
jenkins 应用服务中间件 持续交付
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
190 0
|
Kubernetes Java Maven
无需依赖Docker环境制作镜像
随着高版本的Kubernetes弃用Docker,企业也可以不依赖Docker环境了,但是DevOps通过Kubernetes部署的话,仍然需要制作镜像,那么在没有Docker环境的情况下如何制作呢?推荐一款谷歌的开源工具Jib,[github地址](https://github.com/GoogleContainerTools/jib),它是一个无需Docker守护进程——也无需深入掌握Docker最佳实践的情况下,为Java应用程序构建Docker和OCI镜像, 它可以作为Maven和Gradle的插件,也可以作为Java库。
|
缓存 网络协议 Linux
Dockerfile构建镜像过程中的错误记录及解决方法
本文记录了在一次使用Dockefile构建镜像的途中遇到的问题,以及后续的解决方法。
6934 1
|
jenkins 持续交付
Jenkins(2)- 更改插件源为国内源
Jenkins(2)- 更改插件源为国内源
873 0
Jenkins(2)- 更改插件源为国内源
gitea配置全局代理用于镜像github源
gitea配置全局代理用于镜像github源
1793 0