关于Maven的 install 和 打包
关于安装
进入pom.xml文件目录下,使用命令mvn install
当然也可以使用类似idea这类本身已经集成好maven插件按钮的编辑器进行安装
安装过程会输出安装jar包的目录信息,同样的,跟class编译后的目标文件一起,放在target目录下
注意:开发编译过程中,如果只 编译 mvn compile,修改的代码是不会生效的,必须重新执行install生成新的包。再执行jetty run(Windows下使用jetty作为服务器)过程自然会解析jar包
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ thomson-content-rpc-api --- [INFO] Building jar: E:\JavaDevelop\thomson-content\thomson-content-rpc-api\target\thomson-content-rpc-api.jar
在maven里面,install是安装的意思,也就是说将代码安装到本地仓库中,成为可运行的包。
通常一个成熟的项目,所依赖的外部类比较多,因此在第一次install代码的时候,会花费较长的时间。例如某个项目,我的本地仓库就达到了1.2G。
如何创建自己的本地仓库?
修改maven安装目录下的/conf/settings.xml文件
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd"> <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository --> <localRepository>E:/MavenRepository</localRepository>
修改完后,执行 mvn help:system,会自动下载基础的工程到本地仓库
通常情况下,类似idea编辑器会把仓库设定在c盘,我们可以自行修改自己想要存放的目录
File -> Settings,勾选以下选项框即可修改目录。
再执行mvn命令时,新生成class文件和jar包会放置在本地仓库中
关于打包
很方便,可以根据需要设置权限(按Linux的权限定义),最终生成的压缩包会放在target目录下
pom.xml中添加插件,指定assembly.xml文件
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptor>src/main/assembly/assembly.xml</descriptor> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
配置包后缀和设置权限
需要在src目录下创建assembly目录,目录下创建assemly.xml文件,和bin目录来放置一些执行脚本
assembly.xml
<assembly> <id>assembly</id> <formats>
<!-- 生成包后缀名 --> <format>tar.gz</format> </formats> <includeBaseDirectory>true</includeBaseDirectory> <fileSets> <fileSet> <directory>src/main/assembly/bin</directory> <outputDirectory>bin</outputDirectory>
<!-- 设置linux权限 --> <fileMode>0755</fileMode> </fileSet> <fileSet> <directory>src/main/assembly/conf</directory> <outputDirectory>conf</outputDirectory> <fileMode>0644</fileMode> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> <scope>runtime</scope> </dependencySet> </dependencySets> </assembly>