Red Hat Fuse/A-MQ - 小技巧,开发FUSE专案时的Maven的pom.xml中

来源:互联网 发布:知乎如何修改问题 编辑:程序博客网 时间:2024/05/21 06:27


红帽JBoss的FUSE是开源的企业服务总线(ESB) ,他最大的好處就是可以讓你擁有彈性的安裝大小,讓你可以整合跨越不同資料中心的服務語系統。在FUSE里面,还有Apache的Camel 提供一個功能齊全,容易使用和可以直接使用的框架,所以可以更快速的開發整合專案。Fuse 6.1所提供的元件在这里!

在开发的A-MQ的程式或是Camel的整合系统的时候,我们都会用的Maven来管理程式。 可是常常因為不同版本的關聯,造成程式間的衝突,這種問題超級羅生門,又難抓。介紹幾個小技巧,讓你可以更簡單的管理你的pom.xml,让你可以专注在开发上,不要为了设定一个头两个大。 

不管你是透过原型 或是乾脆起一個空白的maven專案,可以透過一些微幅的調整讓你管理起來更簡單,所以,第一件要解決得事情就是一堆的Artifact的关联版本,要一个一个的查FUSE6 .1或是AMQ6.1用到哪些实在是有够麻烦的,所以我们只要在pom.xml文件里面增加“dependencyManagement”这个标签就会自动地去管理,还有抓取我们需要的版本,是不是很棒!

   <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.jboss.fuse.bom</groupId>                <artifactId>jboss-fuse-parent</artifactId>                <version>${jboss.fuse.bom.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>

我们把FUSE版本独立出来,以后你可以随着版本跟着变更,这次是6.1,所以请在属性的标签里面标明6.1.0.redhat-379

    <properties>        <jboss.fuse.bom.version>6.1.0.redhat-379</jboss.fuse.bom.version>    </properties>
这样我们在关联性上面,就不需要加版本啰! 

例如:

    <dependency>         <groupId>org.apache.camel</groupId>         <artifactId>camel-core</artifactId>    </dependency>

第二个部分就是要如何让你在部署的时候可以更轻松,因为Fabric的部署是可以直接跟maven联结的,所以,先设定登入Fabric的帐号密码,这个就必须设在你的maven的的settings.xml里面拉!路径 ~/.m/setting.xml,你可以同時設定多組密碼,預設值是fabric8.upload.repo,但是如果你同時在開發多個專案,可能也會用到多個吧~

 <servers>      <server>        <id>fabric8.upload.repo</id>        <username>Username4Default</username>        <password>Password4Default</password>      </server>      <server>        <id>fabric8.demo.repo</id>        <username>Username4DEMO</username>        <password>Password4DEMO</password>      </server>    </servers>

把下面的Maven插件加上设定放到你的pom.xml文件里面,

    <plugins>      <plugin>        <groupId>io.fabric8</groupId>        <artifactId>fabric8-maven-plugin</artifactId>        <configuration>          <profile>${fabric8.profile}</profile>          <serverId>${fabric8. serverId}</serverId>        </configuration>      </plugin>    </plugins>

把你想要安装在Frabric上的配置文件名字放在fabric8.profile下,然后把你想要更新的服务器ID(对应到你设在Setting.xml的的ID),放在fabric8.serverId之下。

    <properties>        <fabric8.profile>blogDemo</fabric8.profile>        <fabric8.serverId>fabric8.projectA.repo</fabric8.serverId>    </properties>


因为我们要部署上去的是一个Karaf的OSGI执行容器,确定我们的专案是包成一个包,请加入以下的插件。 (因为有些旧的原型没帮你加,有时候要自己加上去。)这个插件就会帮你自动产生一个包要用到的清单的文件档案。 
对了,不要忘记把你取的包名字放在包-SymbolicName之下,跟把你专案用到定义的java的目录放到私营包装标签之下喔。

      <plugin>        <groupId>org.apache.felix</groupId>        <artifactId>maven-bundle-plugin</artifactId>        <version>2.3.7</version>        <extensions>true</extensions>        <configuration>          <instructions>            <Bundle-SymbolicName>YourBundleName</Bundle-SymbolicName>            <Private-Package>YourJavaSourcePackage</Private-Package>            <Import-Package></Import-Package>          </instructions>        </configuration>      </plugin>

有一个我没有特别要说的是行家的程式库路径设定,基本上,有很多个repo你可以选择,而且如果是我的话,我会把它放在Setting.xml的里面。但是放在pom.xml中 也沒什么不对,所以你可以自己选你要放哪里,还有连到哪个你喜欢的程式库。 

下面提供一个范例给大家参考啰!

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">   <modelversion>4.0.0</modelversion>   <groupid>org.blogdemo</groupid>  <artifactid>tipdemo</artifactid>  <packaging>bundle</packaging>  <version>1.0.0-SNAPSHOT</version>   <name>Christina's Blog Demo</name>   <properties>    <project .build.sourceencoding="">UTF-8</project>    <project .reporting.outputencoding="">UTF-8</project>    <jboss .fuse.bom.version="">6.1.0.redhat-379</jboss>    <fabric8 .profile="">blogDemo</fabric8>    <fabric8 .serverid="">fabric8.demo.repo</fabric8>  </properties>     <dependencymanagement>        <dependencies>            <dependency>                <groupid>org.jboss.fuse.bom</groupid>                <artifactid>jboss-fuse-parent</artifactid>                <version>${jboss.fuse.bom.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>   </dependencymanagement>    <dependencies>    <dependency>      <groupid>org.apache.camel</groupid>      <artifactid>camel-core</artifactid>    </dependency>    <dependency>      <groupid>org.apache.camel</groupid>      <artifactid>camel-spring</artifactid>    </dependency>     <!-- logging -->    <dependency>      <groupid>org.slf4j</groupid>      <artifactid>slf4j-api</artifactid>    </dependency>    <dependency>      <groupid>org.slf4j</groupid>      <artifactid>slf4j-log4j12</artifactid>    </dependency>    <dependency>      <groupid>log4j</groupid>      <artifactid>log4j</artifactid>    </dependency>     <!-- testing -->    <dependency>      <groupid>org.apache.camel</groupid>      <artifactid>camel-test-spring</artifactid>      <scope>test</scope>    </dependency>  </dependencies>   <build>    <defaultgoal>install</defaultgoal>     <plugins>      <plugin>        <groupid>org.apache.maven.plugins</groupid>        <artifactid>maven-compiler-plugin</artifactid>        <version>2.5.1</version>        <configuration>          <source>1.6          <target>1.6</target>        </configuration>      </plugin>      <plugin>        <groupid>org.apache.maven.plugins</groupid>        <artifactid>maven-resources-plugin</artifactid>        <version>2.6</version>        <configuration>          <encoding>UTF-8</encoding>        </configuration>      </plugin>       <!-- allows the route to be ran via 'mvn camel:run' -->      <plugin>        <groupid>org.apache.camel</groupid>        <artifactid>camel-maven-plugin</artifactid>        <version>2.12.0.redhat-610379</version>      </plugin>       <!-- to generate the MANIFEST-FILE of the bundle -->      <plugin>        <groupid>org.apache.felix</groupid>        <artifactid>maven-bundle-plugin</artifactid>        <version>2.3.7</version>        <extensions>true</extensions>        <configuration>          <instructions>            <bundle-symbolicname>tipdemo</bundle-symbolicname>            <private-package>org.blogdemo.tipdemo.*</private-package>            <import-package></import-package>          </instructions>        </configuration>      </plugin>             <!-- Fabric Deployment Plugin -->      <plugin>     <groupid>io.fabric8</groupid>     <artifactid>fabric8-maven-plugin</artifactid>     <!--  <version>1.0.0.redhat-355</version>-->     <configuration>       <profile>${fabric8.profile}</profile>       <serverid>${fabric8. serverId}</serverid>     </configuration>   </plugin>    </plugins>  </build> </project>


原始網站: Christina の J老闆
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 遇到不认识的小姐姐问我问题怎么办 小孩孑脖子洛忱了痛怎么办 挤奶把乳腺挤肿了不出奶怎么办 遇到好兄弟在背后捅刀子怎么办 面对出轨还不想离婚的老公怎么办 法院执行局把案划错了不承认怎么办 手机nfc功能被手机壳挡住怎么办 飞信短信登录验证码达到上限怎么办 手机自带短信软件没了怎么办 老婆出轨孩子又3个不知道怎么办 骑电动车摔跤小脚趾疼有点肿怎么办 第一次太疼了有心理阴影了怎么办 天梭机械表调了时间忽然慢怎么办 支付宝信用住到酒店没房间怎么办 拳头打在硬上骨头肿了怎么办 领导决策出现了失误你该怎么办 我的直销团队走到瓶颈了怎么办 孕妇8个月便秘大便带血怎么办 爱他美金装冲泡有泡沫怎么办 做雅思听力时理解不了原文怎么办 英国读语言班不想读研了怎么办 英国读研本科学位不够分怎么办 英国华威大学读研没分到宿舍怎么办 英国留学申请大学成绩没通过怎么办 很想上专升本但是专科挂科怎么办 英国学校申请的gpa太低了怎么办 博士面试通过后导师不签名怎么办 资助出国留学协议书写错了怎么办 人生最低谷运气最差的时候怎么办 孩子出国留学一年后想回国怎么办 领导给我娃的钱我怎么办 在西浦大三成绩不好影响申研怎么办 日本国想在中国开分公司要怎么办 美国生完孩子做飞机婴儿怎么办 会计专硕复试英语面试不好怎么办 被打过狂犬疫苗的狗咬了怎么办 保姆和雇主带孩子玩受伤了怎么办 银行流水造假拒签10年怎么办 老师进修被学校扣工资该怎么办 老婆性格太倔结婚一年想离婚怎么办 天正打图窗户线条太粗怎么办