2016-11-17 64 views
0

在我的项目中,我连接到一个mysql数据库。要将我的jar部署到jboss保险丝上,我需要将mysql-connector-java添加到deploy文件夹。你有一个想法如何打包我的项目提供一个单一的罐子?包装maven项目jboss保险丝

回答

2

嵌入您的包内一个罐子做到以下几点:

1)声明为一个依赖

<dependencies> 
    <dependency> 
     <groupId>com.your.company</groupId> 
     <artifactId>your-needed-jar</artifactId> 
     <version>1.3.4</version> 
    </dependency> 
<dependencies> 

2)告诉maven-bundle-plugin嵌入它。

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>3.0.1</version> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Embed-Dependency>your-needed-jar</Embed-Dependency> 
        <Import-Package> 
         eventually.unneded.pkg;resolution:="optional", 
         * 
        </Import-Package> 
        <Export-Package> 
         com.your.company.app.exportedpkg 
        </Export-Package> 
       </instructions> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

虽然这项工作在一般情况下,有可能是其做了很多运行时类和代理类生成(如奥姆斯)的库类加载的问题。

恕我直言,更好的方法是从JBoss Fuse本身提供库。要做到这一点:
1)复制mysql-connector-java-xxx.java在JBoss中保险丝lib /目录
2)中的JBoss等/保险丝目录
3)编辑config.propertiescom.mysql.jdbc包添加到列表中

org.osgi.framework.system.packages= \ 
... 
org.apache.karaf.diagnostic.core;version="2.4.0.redhat-621084", \ 
com.mysql.jdbc;version="xxx", \ 

现在你不需要将库嵌入到你的包中,你可以直接导入它。系统包(ID:0)正在导出它。

如需进一步参考,本PDF文件可能会提供有用信息:Red Hat JBoss Fuse 6.2 Managing OSGi Dependencies