Storm的topology项目打包部署时"multiple defaults.yaml resources"错误

 

最近在做日志实时分析,用的Storm做.topology代码已经写好,用的maven项目.

用了"mvn assembly:assembly"命令,包括所依赖的jar包一起打包.

但将jar包提交到服务器上部署时报错:

     java.io.IOException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. [jar:file:/usr/local/jstorm-1.1.2/jstorm-core-1.1.2.jar!/defaults.yaml,jar:file:/usr/local/jstorm-1.1.2/wait_deploy/test-jstorm-bolt.jar!/defaults.yaml

究其原因是maven项目中有:


    org.apache.storm
    storm-core
    1.1.2

与服务器中的storm-core包中的defaults.yaml文件冲突

查看网上解决方案,又说在中加provided,但楼主加上之后打出来的jar包里面依然带defaults.yaml.

然后去Stack OverFlow上找到解决方案(原帖地址:https://stackoverflow.com/questions/31942316/how-to-exclude-certain-jar-dependencies-while-creating-jar-without-using-maven):

将pom.xml中的plugin替换为:

                                                                                
    maven-assembly-plugin                                      
                                                                            
                                                                             
            make-assembly        
            package                  
                                                                                 
                single                                                     
                                                                                
                                                                            
                                                                           
                                                                         
                                                                           
            /src/main/resources/exclude-storm.xml              
                                                                          
                                                                               
                                                                              
                path.to.main.class 
                                                                             
                                                                              
                                                                        
            jar-with-dependencies                        
                                                                       
                                                                        
     

同时根据上面的

                                                                   
    /src/main/resources/exclude-storm.xml              

创建一个xml文件:



    exclude-storm
    
        jar
    
    false
    
        
            /
            false
            true
            compile   
            
                org.apache.storm:storm-core:jar:1.1.1
            
        
    
    
        
            /
            ${project.build.outputDirectory}
        
    

然后用"mvn clean assemly:assembly"打包.

打包后的jar包不包括default.yaml

你可能感兴趣的:(Storm的topology项目打包部署时"multiple defaults.yaml resources"错误)