大佬教程收集整理的这篇文章主要介绍了如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖项的自定义 jar,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有许多 Spring Boot 微服务,并且我开发了一个新项目,该项目具有 Spring-Vault
作为依赖项。开发这个新项目(比如 vault-clIEnt-spring
)是为了具有用于设置 Vault 的通用配置并在所有微服务中使用它,我已将 jar 发布到我组织的私有 Maven 托管存储库中。
我的问题是当我在任何微服务中添加这个 jar 作为依赖项时,应用程序没有开始抛出以下错误。 Spring-Cloud-Vault
依赖项不会导入到我的消费项目中。我还在 spring.cloud.vault
文件中添加了以前缀 bootstrap.yml
开头的必要属性。
这是我的 build.gradle
文件 vault-clIEnt-spring
。
group = 'com.mygroup'
version = '0.0.1'
buildscript {
ext {
springBootVersion = '2.4.4'
springDepsMgmtVersion = '1.0.11.RELEASE'
}
repositorIEs {
mavenCentral()
}
dependencIEs {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "io.spring.gradle:dependency-management-plugin:${springDepsMgmtVersion}"
}
}
apply plugin: 'java-library'
apply plugin: 'IDea'
apply plugin: 'maven-publish'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
sourceCompatibility = '1.8'
repositorIEs {
mavenCentral()
}
configurations {
compiLeonly {
extendsFrom AnnotationProcessor
}
}
bootJar {
enabled = false
}
jar {
archivesBasename = 'vault-clIEnt-spring'
enabled = true
}
ext {
springCloudVersion = '2020.0.2'
}
dependencymanagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencIEs:${springCloudVersion}"
}
}
dependencIEs {
implementation 'org.springframework.cloud:spring-cloud-starter-vault-config'
compiLeonly 'org.projectlombok:lombok'
AnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
task sourcesJar(type: Jar,dependsOn: classes) {
classifIEr('sources')
from sourceSets.main.allsource
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
artifact sourcesJar
}
}
repositorIEs {
maven {
credentials {
username 'PRIVATE-USER'
password 'PRIVATE-passworD'
}
url 'PRIVATE MAVEN URL'
}
}
}
这是使用此 jar 的微服务的 build.gradle
文件。
plugins {
ID 'org.springframework.boot' version '2.4.3'
ID 'io.spring.dependency-management' version '1.0.11.RELEASE'
ID 'java'
}
group = 'com.mygroup'
version = ''
sourceCompatibility = '1.8'
configurations {
compiLeonly {
extendsFrom AnnotationProcessor
}
}
repositorIEs {
mavenCentral()
maven { url 'PRIVATE MAVEN URL' }
}
bootJar {
setArchivesBasename("microservice-one")
version("")
}
dependencIEs {
implementation 'com.mygroup:vault-clIEnt-spring:0.0.1' // here's the dependency
implementation 'org.springframework.boot:spring-boot-starter-web'
compiLeonly 'org.projectlombok:lombok'
AnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
compileJava {
compileJava.inputs.files(processresources)
}
test {
useJUnitPlatform()
}
生成的 POM 文件。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLscheR_516_11845@a-instance" xsi:scheR_516_11845@aLOCATIOn="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupID>com.mygroup</groupID>
<artifactID>vault-clIEnt-spring</artifactID>
<version>0.0.1</version>
<dependencymanagement>
<dependencIEs>
<dependency>
<groupID>org.springframework.cloud</groupID>
<artifactID>spring-cloud-dependencIEs</artifactID>
<version>2020.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupID>org.springframework.boot</groupID>
<artifactID>spring-boot-dependencIEs</artifactID>
<version>2.4.4</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencIEs>
</dependencymanagement>
</project>
我面临的错误如下..
Caused by: java.io.fileNotFoundException: class path resource [org/springframework/vault/config/AbstractVaultConfiguration.class] cAnnot be opened because it does not exist
at org.springframework.core.io.ClassPathresource.geTinputStream(ClassPathresource.java:180) ~[spring-core-5.3.4.jar:5.3.4]
at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:55) ~[spring-core-5.3.4.jar:5.3.4]
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49) ~[spring-core-5.3.4.jar:5.3.4]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103) ~[spring-core-5.3.4.jar:5.3.4]
at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.createMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:86) ~[spring-boot-2.4.3.jar:2.4.3]
at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.getMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:73) ~[spring-boot-2.4.3.jar:2.4.3]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81) ~[spring-core-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.assourceClass(ConfigurationClassparser.java:696) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser$sourceClass.getSuperClass(ConfigurationClassparser.java:1010) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.doprocessConfigurationClass(ConfigurationClassparser.java:341) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.processConfigurationClass(ConfigurationClassparser.java:250) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.parse(ConfigurationClassparser.java:199) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.doprocessConfigurationClass(ConfigurationClassparser.java:304) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.processConfigurationClass(ConfigurationClassparser.java:250) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.parse(ConfigurationClassparser.java:207) ~[spring-context-5.3.4.jar:5.3.4]
at org.springframework.context.Annotation.ConfigurationClassparser.parse(ConfigurationClassparser.java:175) ~[spring-context-5.3.4.jar:5.3.4]
... 14 common frames omitted
如何解决这个错误?第一次做Spring Cloud原生项目
我自己找到的。由于我正在作为“库”进行开发,因此我必须允许 Spring-Vault 依赖项包含在使用应用程序中。根据 Gradle 的 java-library 插件,我使用了 api
依赖项。消费应用程序可以访问和引导它们。
以上是大佬教程为你收集整理的如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖项的自定义 jar全部内容,希望文章能够帮你解决如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖项的自定义 jar所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。