Java 向spring项目添加自定义依赖项后缺少类
为了避免代码重复,我决定在基于spring的库项目中打包一些类。以下是我采取的步骤:Java 向spring项目添加自定义依赖项后缺少类,java,spring,spring-boot,maven,maven-jar-plugin,Java,Spring,Spring Boot,Maven,Maven Jar Plugin,为了避免代码重复,我决定在基于spring的库项目中打包一些类。以下是我采取的步骤: 使用spring initialzr创建项目 创建所需的结构并添加类 删除的主类 添加到pom.xml所需的依赖项 添加到pom.xmlpluginmaven jar plugin 创建了一个简单脚本,用于自动打包和安装对本地maven存储库的依赖关系: 脚本执行成功,我已将新创建的依赖项添加到另一个项目中 在应用程序启动期间,我遇到了一个异常: Caused by: java.lang.ClassNotFo
pom.xml
所需的依赖项pom.xml
pluginmaven jar plugin
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.dataformat.yaml.YAMLFactory
类YAMLFactory
属于依赖项jackson dataformat yaml
,该依赖项添加到库项目的pom.xml
:
根据我的理解,
mvn包
不包含依赖项,那么如何正确地包含它们呢?我知道fat jar的概念,但这可能不是正确的解决方案。我用来编译spring应用程序的是:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler.version}</version>
<configuration>
<source>11</source>
<target>11</target>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>path.to.main.class</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven编译器插件
${maven compiler.version}
11
11
11
org.springframework.boot
springbootmaven插件
真的
path.to.main.class
重新包装
和
mvn清洁安装
,它将生成一个包含所有依赖项的jar
希望它对您有所帮助。构建和安装可以通过以下方式完成:
mvn clean package
将创建所有内容,mvn clean install
将工件安装到您的本地存储库中,这通常不是您喜欢的。mvn Spring Boot:run
启动应用程序命令行或通过IDE…不完全正确。这个项目的目标是能够将它作为一个依赖项添加到另一个项目中,能够使用可重用代码。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler.version}</version>
<configuration>
<source>11</source>
<target>11</target>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>path.to.main.class</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>