|
| 1 | +# java-maven打包学习 |
| 2 | + |
| 3 | +>之前提供spring写了一个shiro扫描key的工具,可惜简单的打包好像不行,因为有依赖包等等,因为我是提供spring框架提供的web服务去扫描的。今天就来填坑。。。。 |
| 4 | +
|
| 5 | +之前的打包一运行就报错。。非常难受。然后百度了一下原来是因为没有配置META-INF文件,所以在启动jar的时候找不到主类。而META-INF文件里面就配置了jar启动的主类和其他信息(Class-Path)。所以可以理解为启动jar的时候先去META-INF文件里面读配置然后执行java代码。你没有配置当然找不到主类咯。 |
| 6 | + |
| 7 | +然后就是来学习maven打包方式。 |
| 8 | + |
| 9 | +### maven命令 |
| 10 | + |
| 11 | +1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。 |
| 12 | + |
| 13 | +2、mvn test 测试,并生成测试报告 |
| 14 | + |
| 15 | +3、mvn clean 将以前编译得到的旧的 class 字节码文件删除 |
| 16 | + |
| 17 | +4、mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。 |
| 18 | + |
| 19 | +5、mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用 |
| 20 | + |
| 21 | +6、mvn clean install -Dmaven.test.skip=true 抛弃测试用例打包 |
| 22 | + |
| 23 | +### 配置一 |
| 24 | + |
| 25 | +使用maven-jar-plugin和maven-dependency-plugin插件打包 |
| 26 | + |
| 27 | +通过**mvn package**指令打包 |
| 28 | + |
| 29 | +```xml |
| 30 | + |
| 31 | +<build> |
| 32 | + <plugins> |
| 33 | + |
| 34 | + <plugin> |
| 35 | + <groupId>org.apache.maven.plugins</groupId> |
| 36 | + <artifactId>maven-jar-plugin</artifactId> |
| 37 | + <version>2.6</version> |
| 38 | + <configuration> |
| 39 | + <archive> |
| 40 | + <manifest> |
| 41 | + <addClasspath>true</addClasspath> |
| 42 | + <classpathPrefix>lib/</classpathPrefix> |
| 43 | + <mainClass>com.xxg.Main</mainClass> |
| 44 | + </manifest> |
| 45 | + </archive> |
| 46 | + </configuration> |
| 47 | + </plugin> |
| 48 | + <plugin> |
| 49 | + <groupId>org.apache.maven.plugins</groupId> |
| 50 | + <artifactId>maven-dependency-plugin</artifactId> |
| 51 | + <version>2.10</version> |
| 52 | + <executions> |
| 53 | + <execution> |
| 54 | + <id>copy-dependencies</id> |
| 55 | + <phase>package</phase> |
| 56 | + <goals> |
| 57 | + <goal>copy-dependencies</goal> |
| 58 | + </goals> |
| 59 | + <configuration> |
| 60 | + <outputDirectory>${project.build.directory}/lib</outputDirectory> |
| 61 | + </configuration> |
| 62 | + </execution> |
| 63 | + </executions> |
| 64 | + </plugin> |
| 65 | + </plugins> |
| 66 | +</build> |
| 67 | +``` |
| 68 | + |
| 69 | +maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容, |
| 70 | + |
| 71 | +<mainClass>com.xxg.Main</mainClass>指定MANIFEST.MF中的Main-Class, |
| 72 | + |
| 73 | +<addClasspath>true</addClasspath>会在MANIFEST.MF加上Class-Path项并配置依赖包, |
| 74 | + |
| 75 | +<classpathPrefix>lib/</classpathPrefix>指定依赖包所在目录。 |
| 76 | + |
| 77 | + |
| 78 | + |
| 79 | +### 配置二 |
| 80 | + |
| 81 | +使用maven-assembly-plugin插件打包 |
| 82 | + |
| 83 | +通过**mvn package assembly:single**指令打包 |
| 84 | + |
| 85 | +```xml |
| 86 | +<build> |
| 87 | + <plugins> |
| 88 | + <plugin> |
| 89 | + <groupId>org.apache.maven.plugins</groupId> |
| 90 | + <artifactId>maven-assembly-plugin</artifactId> |
| 91 | + <version>2.5.5</version> |
| 92 | + <configuration> |
| 93 | + <archive> |
| 94 | + <manifest> |
| 95 | + <mainClass>com.xxg.Main</mainClass> |
| 96 | + </manifest> |
| 97 | + </archive> |
| 98 | + <descriptorRefs> |
| 99 | + <descriptorRef>jar-with-dependencies</descriptorRef> |
| 100 | + </descriptorRefs> |
| 101 | + </configuration> |
| 102 | + </plugin> |
| 103 | + </plugins> |
| 104 | +</build> |
| 105 | +``` |
| 106 | + |
| 107 | +### 配置三 |
| 108 | + |
| 109 | +使用maven-shade-plugin插件打包 |
| 110 | + |
| 111 | +通过**mvn package**指令打包 |
| 112 | + |
| 113 | +```xml |
| 114 | + |
| 115 | +<build> |
| 116 | + <plugins> |
| 117 | + |
| 118 | + <plugin> |
| 119 | + <groupId>org.apache.maven.plugins</groupId> |
| 120 | + <artifactId>maven-shade-plugin</artifactId> |
| 121 | + <version>2.4.1</version> |
| 122 | + <executions> |
| 123 | + <execution> |
| 124 | + <phase>package</phase> |
| 125 | + <goals> |
| 126 | + <goal>shade</goal> |
| 127 | + </goals> |
| 128 | + <configuration> |
| 129 | + <transformers> |
| 130 | + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> |
| 131 | + <mainClass>com.xxg.Main</mainClass> |
| 132 | + </transformer> |
| 133 | + </transformers> |
| 134 | + </configuration> |
| 135 | + </execution> |
| 136 | + </executions> |
| 137 | + </plugin> |
| 138 | + |
| 139 | + </plugins> |
| 140 | +</build> |
| 141 | +``` |
| 142 | + |
| 143 | +这里自己喜欢第二个方法,如果记不住可以设置代码块。。 |
| 144 | + |
| 145 | + |
| 146 | + |
| 147 | +>参考: |
| 148 | +> |
| 149 | +>https://blog.csdn.net/weixin_42248302/article/details/100886727 |
| 150 | +> |
| 151 | +>https://blog.csdn.net/sdrfengmi/article/details/87191944 |
| 152 | +
|
0 commit comments