10 KiB
10 KiB
POM 文件
<parent> 元素
- 用途:
<parent>元素用于继承父 POM 的配置。通过定义<parent>,子项目可以继承父 POM 中的插件、依赖管理、属性、构建配置等。 - 应用场景:适用于多模块项目(multi-module project),其中有一个通用的父项目提供共享的配置和依赖。
- 继承特性:子项目会继承父项目的依赖管理(dependencyManagement)、插件管理(pluginManagement)等内容,但不会自动继承
<dependencies>中的依赖。 - 示例:
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
</parent>
<dependency> 元素
- 用途:
<dependency>元素用于声明当前项目直接依赖的外部库或模块。Maven 会根据这些依赖项自动下载相关的 JAR 文件。 - 应用场景:适用于项目需要使用外部库或其他模块时,直接声明依赖。
- 继承特性:它不会继承,而是直接在当前项目中生效。
- 示例:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.10</version>
</dependency>
</dependencies>
Settings 文件
阿里云公共仓库
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
私服搭建(Docker)
拉取并运行 Nexus 容器
- 创建一个目录来存储 Nexus 数据
mkdir -p /opt/nexus-data
chmod -R 777 /opt/nexus-data
ls -ld /opt/nexus-data
- 拉取并运行 Nexus Docker 镜像
docker run -d -p 8081:8081 --name nexus --restart unless-stopped -v /opt/nexus-data:/nexus-data sonatype/nexus3
-d选项表示以后台模式运行容器。-p 8081:8081将容器的 8081 端口映射到主机的 8081 端口。--name nexus给容器命名为nexus。-v ~/nexus-data:/nexus-data将主机上的目录~/nexus-data挂载到容器内的/nexus-data,用于持久化数据。
访问 Nexus
Nexus 启动后,可以通过浏览器访问 http://<your-ip>:8081。初始页面可能需要一段时间加载,因为 Nexus 需要一些时间来初始化数据。
配置 Nexus
-
登录:默认管理员的用户名是
admin。初始密码可以在挂载数据卷的admin.password文件中找到:cat ~/nexus-data/admin.password -
初始设置:首次登录后,根据向导完成基本设置。
个人测试配置
admin
tianzhuo123.
tianzhuo
tianzhuo123.
问题记录
08:20:05 [] [] [] [] [main] ERROR org.springframework.boot.SpringApplication 870 reportFailure - Application run failed
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.28.jar:5.3.28]
at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_431]
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:937) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.28.jar:5.3.28]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.15.jar:2.5.15]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:780) ~[spring-boot-2.5.15.jar:2.5.15]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:453) ~[spring-boot-2.5.15.jar:2.5.15]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:343) ~[spring-boot-2.5.15.jar:2.5.15]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) ~[spring-boot-2.5.15.jar:2.5.15]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) ~[spring-boot-2.5.15.jar:2.5.15]
at com.cmcc.cdn.platform.BootApplication.main(BootApplication.java:57) ~[classes/:?]
Caused by: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_431]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_431]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) ~[?:1.8.0_431]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_431]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_431]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_431]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_431]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_431]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) ~[?:1.8.0_431]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_431]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_431]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_431]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_431]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_431]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) ~[?:1.8.0_431]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_431]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_431]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_431]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_431]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_431]
at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3512) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache$LoadingValueReference.<init>(LocalCache.java:3516) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2169) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache.get(LocalCache.java:4012) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035) ~[guava-32.1.2-jre.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5013) ~[guava-32.1.2-jre.jar:?]
at springfox.documentation.schema.CachingModelProvider.modelFor(CachingModelProvider.java:59) ~[springfox-schema-2.9.2.jar:null]
at springfox.documentation.spring.web.scanners.ApiModelReader.read(ApiModelReader.java:69) ~[springfox-spring-web-2.9.2.jar:null]
at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:133) ~[springfox-spring-web-2.9.2.jar:null]
at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:71) ~[springfox-spring-web-2.9.2.jar:null]
at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.scanDocumentation(DocumentationPluginsBootstrapper.java:101) ~[springfox-spring-web-2.9.2.jar:null]
at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:167) ~[springfox-spring-web-2.9.2.jar:null]
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.28.jar:5.3.28]
... 14 more
Caused by: java.lang.ClassNotFoundException: com.google.common.util.concurrent.internal.InternalFutureFailureAccess
at java.net.URLClassLoader.findClass(URLClassLoader.java:387) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_431]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:359) ~[?:1.8.0_431]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_431]
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_431]
因为拉下来的 POM 存在问题。
可以把中央镜像仓库放在前边。优先中央镜像。
