首页 > 解决方案 > 为什么maven packege产生4个jar文件?

问题描述

当我运行mvn package时,总共产生了 4 个文件:

  1. foo.jar
  2. foo.zip
  3. foo-1.0-SNAPSHOT.jar
  4. foo.1.0-SNAPSHOT.jar.original

谁能解释一下导致这种情况的原因?是我使用的一些插件吗?

这是我的一部分pom.xml


    <modelVersion>4.0.0</modelVersion>
 
       <groupId>cn.bar.buzz</groupId>
    <artifactId>foo</artifactId>
       <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
 
        ... some dependencies
    </dependencies>
      
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.16.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
        <resources>
            <resource>
                <directory>src/main/resources/web</directory>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
            </plugin>
 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
 
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.16.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                    <mainClass>cn.bar.service.MyApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
 
 
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>cn.bar.service.AnotherApplication</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>${project.artifactId}</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>
                   <outputDirectory>target</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <id>assemble-all</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

maven 本身是为我打包还是插件包?如果是后者,哪个插件完成了哪部分工作?

标签: maven

解决方案


  1. spring-boot-maven-plugin生产foo-1.0-SNAPSHOT.jarfoo.1.0-SNAPSHOT.jar.original
  2. maven 程序集插件创建的 zip 文件
  3. maven默认procude jar

推荐阅读