在Spring Boot应用程序中复制依赖项

5
我有一个Spring Boot应用程序,在进行Maven安装时,希望它创建一个Jar文件并将依赖项复制到一个lib文件夹中。我试图使用这两个Maven插件,这在其他Maven项目中很好用,但在Spring Boot应用程序中不起作用。
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
           <useDefaultManifestFile>true</useDefaultManifestFile>
           <archive>
              <manifest>
                 <addClasspath>true</addClasspath>
                 <mainClass>xxx.Main</mainClass>
                 <classpathPrefix>lib/</classpathPrefix>
              </manifest>
           </archive>
        </configuration>
     </plugin>
     <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
           <execution>
              <phase>install</phase>
              <goals>
                 <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                 <outputDirectory>${project.build.directory}/lib</outputDirectory>
              </configuration>
           </execution>
        </executions>
     </plugin>

发生的情况是,即使省略了maven-jar-plugin,也会创建jar文件。它不会使用maven-dependency-plugin做任何事情。因此,它基本上忽略了这两个插件。


1
你尝试过吗 - https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html - Anton N
@Anton:我之前没有看到过这个。看起来就是我一直在找的东西。我会试一下的。谢谢! - developer747
好的,我尝试了。它仍然没有向我展示如何将依赖项复制到外部文件夹。 - developer747
为什么你想把依赖项放到外部文件夹中?!你的jar应该包含所有需要的内容,这样你就不需要再去处理额外的文件夹了。 - M. Deinum
还有其他团队构建的应用程序,它们共享许多这些常见的JAR文件(如Hibernate、Spring等)。如果我将它们放在外部文件夹中,将来就可以共享这些依赖项。 - developer747
2个回答

1

我将Spring Boot插件放在copy-dependencies之后,它可以正常工作!

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

注:我清理了Maven仓库以使其工作!


0
我认为你应该尝试使用Spring Boot + Gradle: Spring boot Gradle 在build.gradle文件中,你可以通过使用gradle的copy方法自定义构建过程并将依赖项复制到lib文件夹中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接