使用maven将项目打成jar包
2016-05-02 22:29
363 查看
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>wusc.edu.common</groupId> <artifactId>edu-common-parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../edu-common-parent</relativePath> </parent> <groupId>wusc.edu.service</groupId> <artifactId>edu-service-user</artifactId> <version>${edu-service-user.version}</version> <packaging>jar</packaging> <name>edu-service-user</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <log4j.leve>debug</log4j.leve> <log4j.ale>debug</log4j.ale> </properties> <build> <finalName>edu-service-user</finalName> <resources> <!-- 把src/main/resources下的包括xml和properties的文件复制到target/classes下 --> <resource> <targetPath>${project.build.directory}/classes</targetPath> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> <!-- 把src/main/resources/spring下的spring-context.xml 文件复制到target/classes/META-INF/spring下 --> <resource> <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath> <directory>src/main/resources/spring</directory> <filtering>true</filtering> <includes> <include>spring-context.xml</include> </includes> </resource> </resources> <pluginManagement> <!--这个插件没看懂 似乎和eclipse与mavan生命周期冲突相关 --> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[2.0,)</versionRange> <goals> <goal>copy-dependencies</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!--打jar包范围是rarget/classes 启动类是 com.alibaba.dubbo.container.Main --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <classesDirectory>target/classes</classesDirectory> <archive> <manifest> <!-- 不记录版本号 --> <useUniqueVersions>false</useUniqueVersions> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.alibaba.dubbo.container.Main</mainClass> </manifest> <manifestEntries> <Class-Paht>.</Class-Paht> </manifestEntries> </archive> </configuration> </plugin> <!--打jar包 项目本身的依赖包放在lib文件夹下 (lib与生成的jar在同一目录) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <type>jar</type> <includeTypes>jar</includeTypes> <useUninqeVersions>false</useUninqeVersions> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> <!-- dubbo 需要的jar start --> <dependency> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
</pre>如果这个项目本身还依赖另一个项目A,那么我们就得先把项目A打成jar包使用上面的pom,然后在myeclipse中右键,run as maven install最后结果<p>如下图</p><p>lib下存放着edu-service-user运行所需要的jar</p><p>另外,我们之间在命令行下,使用java -jar edu-service-user.jar 即可调用</p><p>com.alibaba.dubbo.container.Main这个类</p><p><img src="https://img-blog.csdn.net/20160502222634711?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
第二种方式
<pre name="code" class="html"><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.2.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass></transformer></transformers></configuration></execution></executions></plugin>运行mvn install 后 会在target下生成两个jar包original-xxx-0.0.1-snapshot.jar 这里面只有我们自己写的java代码的class文件xxx-0.0.1-snapshot.jar 这里面我们依赖的jar包(会抽出里面的class文件)会和我们的代码放在一块如下:
还有一种方式
<plugin><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>abc.ef.sdf</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>assembly</goal></goals></execution></executions></plugin> 然后在pom文件上右键 run as->maven assembly:assembly之后在pom的同级目录里会生成你所需要的jar不知道怎么回事,我的myeclipse里没有maven assembly:assembly不过可以这样run build... 然后相关文章推荐
- 循环移位问题
- 一知半见的oracle表函数
- 第1课:通过案例对Spark Streaming透彻理解三板斧之一Spark Streaming另类实验及本质解析
- 删除排序链表中的重复数字 II
- 草稿
- 使用maven将项目打成jar包
- Left padding a String with Zeros
- Python基础学习总结
- HDU 1042 N! -- 求阶乘 java大法好
- WeText项目的服务端
- 【总结】教你怎么将centos7打造成桌面系统
- 根据类型,读取zip文件中单个文件的内容
- PHP新手如何提高代码质量
- PS 常用工具使用汇总
- 秒杀系统的设计
- viewController和resignFirstResponder的情丝
- HDU 1753 大明A+B -- java大法好
- 《Hibernate学习笔记七》一对一联合主键的关联
- 从快速排序展开的
- 面试算法题