Maven 配置 Storm 第三方依赖包分离
来源:互联网 发布:火源计划激活码淘宝 编辑:程序博客网 时间:2024/05/17 01:07
做storm的开发,一直有一个问题困扰,就是第三方依赖的包都要合并打成一个包,才能放到服务器上去运行,随着需求功能的增加,打的包也就越来越大。而我们的生产环境在云上,每次发布包,几百兆的文件都要传好久。
所以,决定把这个问题彻底解决了,Storm的安装目录下有一个extlib的目录,分析bin/storm文件,发现,topo在启动运行的时候,会到这个目录下寻找是否有要加入到classpath中的文件。这个就是我们解决问题的地方啦。
我们是通过maven打包,所以这个时候就要修改maven的pom文件,先来支持依赖分离。
配置如下,主要是插件部分:
<plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <addMavenDescriptor>false</addMavenDescriptor> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory>] </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration> <descriptors> <descriptor>package.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins>
再配置,将依赖打包成zip文件。
package.xml
<assembly> <id>bin</id> <!-- 最终打包成一个用于发布的zip文件 --> <formats> <format>zip</format> </formats> <!-- Adds dependencies to zip package under lib directory --> <dependencySets> <dependencySet> <!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 --> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>/</outputDirectory> <unpack>false</unpack> </dependencySet> </dependencySets> <fileSets> <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 --> <fileSet> <directory>${project.build.directory}/lib</directory> <outputDirectory>/</outputDirectory> <includes> <include>*.jar</include> </includes> <excludes> <exclude>storm-core-1.0.1.jar</exclude> <!-- 与节点上安装的storm 有冲突 --> </excludes> </fileSet> </fileSets></assembly>
这样,打包之后,依赖全部放在了target/lib 目录下,而程序包,放在target目录下。
第一次发布会麻烦一点,因为所有依赖包要发布到所有storm节点上,之后再发布,就只用发布程序包了。如果使用jenkins,那就更方便,可以配置成自动化发布,就不用手工去各个节点上发布了。
阅读全文
0 0
- Maven 配置 Storm 第三方依赖包分离
- Maven Install 加入第三方依赖包
- maven打war包加入第三方依赖包
- Maven分离配置、依赖
- Maven分离配置、依赖
- Maven项目配置第三方jar包
- maven配置第三方jar包
- Maven引入第三方Jar包依赖-验证码例子
- Storm 如何分发第三方依赖jar
- maven 添加第三方依赖
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- Maven 打包-添加第三方包、依赖包 mvn clean package
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- maven 排除第三方jar包中pom文件中的依赖引用包
- maven打包依赖第三方包,但不打进jar包中
- ORA-30036:无法按8扩展段(在还原表空间xxx中)
- oracle 用户权限之执行存储过程权限不足
- java:11-构造函数基本介绍
- linux与win下文件打开汉子乱码问题
- JavaScript 函数参数传递到底是值传递还是引用传递
- Maven 配置 Storm 第三方依赖包分离
- JAVA学习日记----------排序篇03
- 清除浮动
- [Leetcode] 214. Shortest Palindrome 解题报告
- WebAPIServiceHelper 请求帮助类
- 制作CSS气泡框
- JPEG图像压缩算法流程详解
- QT窗口去掉最大化最小化关闭按钮
- InnoDB 锁