您的位置:首页 > 其它

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

2014-06-17 13:42 531 查看


红帽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老闆
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息