Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为SpringBoot应用程序构建了两个JAR_Java_Spring_Maven_Spring Boot - Fatal编程技术网

Java 为SpringBoot应用程序构建了两个JAR

Java 为SpringBoot应用程序构建了两个JAR,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,我正在使用SpringBoot1.4.1,并构建了一个非常简单的应用程序。当我使用以下pom.xml时,我看到两个jar正在使用maven构建(abc.jar和abc boot.jar)。如何避免构建abc.jar,因为它只会浪费总体构建时间 pom.xml粘贴在下面- <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http

我正在使用SpringBoot1.4.1,并构建了一个非常简单的应用程序。当我使用以下pom.xml时,我看到两个jar正在使用maven构建(abc.jar和abc boot.jar)。如何避免构建abc.jar,因为它只会浪费总体构建时间

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>

4.0.0
abc
abc
0.0.1
罐子
org.springframework.boot
spring启动程序父级
1.4.1.1发布
org.springframework.boot
弹簧靴起动器
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
org.springframework.boot
弹簧起动试验
测验
abc
org.springframework.boot
springbootmaven插件
xyz.应用程序
拉链
靴子
org.apache.maven.plugins
maven编译器插件
3.3
1.8
1.8
maven故障保护插件
集成测试
集成测试

您将获得两个工件,因为默认的程序集pluing正在创建abc.jar,而您添加的spring boot maven插件将生成另一个名为abc boot.jar的jar。
或者,您可以去掉SpringBootMaven插件,仍然能够生成一个可执行的jar。这可以通过如下示例所示配置maven assembly插件来实现

<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>

[...]
[...]
maven汇编插件
2.6
[...]
org.sample.App//在此处指定spring boot主类。
[...]
[...]

您得到了两个JAR,因为您已经用分类器配置了Spring Boot的Maven插件。这意味着它生成的胖罐子是与普通罐子一起创建的


如果您希望生成一个jar并使其成为胖jar,那么应该从插件配置中删除
boot

remove spring boot maven plugint这将失去boot插件创建的胖可执行jar的所有好处