Maven将引用项/依赖包打包到jar文件中

mvn package命令只能用于没有引用项/依赖包的打包。

 

解决方法:

如果要把引用项/依赖包打包到运行jar文件中,有2个可选插件:

maven-assembly-plugin
maven-shade-plugin

下面使用的是maven-assembly-plugin插件。

在pom.xml中加入以下内容:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>这里填写主类名,例如com.clotho.util.Calculate</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

保存后,刷新Maven。

在命令行中输入:

mvn assembly:assembly

程序会自动把引用包也一起打包到jar文件中

 

附录:

1.提示“找不到plugins”错误的处理

如果使用的是IDEA,提示“Maven plugins can not be found”,可按以下步骤解决:

File -> Setting -> Build, Execution, Deployment -> Build Tools -> Maven -> 勾选Use plugin registry选项

然后,

File -> Invalidate Caches -> Invalidate and Restart(重启IDEA)

 

2.指定jar文件名

在build标签中增加<finalName>指定的jar文件名</finalName>

例如,要把jar文件名改成MyJarName:

<build>
    <finalName>MyJarName</finalName>
</build>

 

3.去掉包含依赖包的jar文件名的名字后缀

maven-assembly-plugin会生成2个jar包,一个是原名(没包含依赖包),一个是带后缀名(包含了依赖包)

后缀名是在descriptorRef标签中配置,例如上面方法配置的是jar-with-dependencies:

<descriptorRef>jar-with-dependencies</descriptorRef>

如果注释掉这行,或去掉里面的jar-with-dependencies,编译时会报错。

解决方法是在configuration表中中加入一行<appendAssemblyId>false</appendAssemblyId>,例如:

<configuration>
    <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <appendAssemblyId>false</appendAssemblyId>
</configuration>

 

posted @ 2021-11-19 22:58  Clotho_Lee  阅读(3294)  评论(0编辑  收藏  举报