2016-09-29 22 views
0

我使用的是spring引導1.4.1,並構建了一個非常簡單的應用程序。當我使用下面的pom.xml時,我發現使用maven構建了兩個JAR(abc.jar和abc-boot.jar)。我將如何避免構建abc.jar,因爲它只會浪費整個構建時間?兩個JAR是爲SpringBoot應用程序構建的

pom.xml中粘貼如下 -

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>abc</groupId> 
    <artifactId>abc</artifactId> 
    <version>0.0.1</version> 
    <packaging>jar</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.1.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <!-- Need to avoid putting version in final jar's name --> 
     <finalName>abc</finalName> 
     <plugins> 
      <plugin> 
       <!-- Package as an executable jar --> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <mainClass>xyz.Application</mainClass> 
        <layout>ZIP</layout> 
        <classifier>boot</classifier> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <goals> 
          <goal>integration-test</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+1

刪除spring-boot-maven-plugin – mariusz2108

回答

-1

你得到兩個產物,因爲默認組件pluing創造abc.jar並讓您感覺彈簧引導Maven的插件將產生另一個罐子名稱abc-boot.jar。
或者,您可以擺脫spring-boot-maven插件,並且仍然能夠生成一個可執行的jar文件。這可以通過配置maven程序集插件來完成,如下例所示。

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      [...] 
      <archive> 
      <manifest> 
       <mainClass>org.sample.App</mainClass> //specify your spring-boot main class here. 
      </manifest> 
      </archive> 
     </configuration> 
     [...] 
     </plugin> 
     [...] 
</project> 
+0

這將失去Boot的插件創建的可執行jar文件的所有好處 –

3

由於您使用分類器配置了Spring Boot的Maven插件,因此您得到了兩個jar。這意味着它生成的脂肪罐是在普通罐旁邊創建的。

如果你想要生產一個罐子,並且它是一個胖罐子,你應該從插件配置中刪除<classifier>boot</classifier>

+0

感謝Andy,它的工作原理! – Martin

相關問題