2011-07-28 28 views
2

我有一個項目依賴於JBoss(特別是5.1.0.GA),我正在嘗試使用SBT設置此項目。我想知道的是,如果有一種方法可以說「這個項目依賴於JBoss X版本以及所有與之相關的內容」,還是我確實需要單獨聲明每一個依賴項?我希望SBT能夠下載編譯該項目所需的所有合適的依賴關係。如何在SBT中聲明對jboss的依賴?

我很新的依賴管理,所以任何方向表示讚賞。我正在嘗試使用SBT(使用Ivy)來做到這一點,但maven中的示例也是受歡迎的。

回答

2

您必須手動聲明每個依賴項,沒有超級pom包含所有依賴項。

這是非常棘手的,因爲它很難找出,你需要在某些情況下。

一個好的開始是採取每個lib,這也是在jboss_home/lib下,並從那裏開始減少。

如果你有自己的資源庫代理(如artifactory或archiva),你可以創建這樣一個超級pom。

這是來自我自己的存儲庫,可能會幫助您入門。但這絕不是官方的,並且符合我的需求。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="http://www.jayasoft.fr/org/ivyrep/ivy-doc.xsl"?> 
<ivy-module version="1.0"> 
    <info 
     organisation="jboss" 
     module="jboss" 
     revision="5.1.0" 
     status="release" 
     publication="20110801120000"/> 
    <configurations> 
      <conf name="compile" visibility="public" /> 
      <conf name="client" visibility="public" extends="compile,mail,activation, aop"/> 
      <conf name="server" visibility="public" extends="compile,servlet,jmx"/> 
      <conf name="hibernate" visibility="public" /> 
      <conf name="activation" visibility="public" /> 
      <conf name="mail" visibility="public" /> 
      <conf name="servlet" visibility="public" /> 
      <conf name="jmx" visibility="public" /> 
        <conf name="jmx-client" visibility="public" extends="client,jmx"/> 
      <conf name="aop" visibility="public" /> 
      <conf name="javaee" visibility="public" /> 
      <conf name="ant" visibility="public" /> 
     <conf name="logging" visibility="public" /> 
    </configurations> 
    <publications> 
    <!-- from jbossall-client readme.txt --> 
      <artifact name="commons-logging"  type="jar" conf="client"/> 
     <artifact name="concurrent"  type="jar" conf="client"/> 
     <artifact name="ejb3-persistence"  type="jar" conf="client"/> 
     <artifact name="jboss-aop-client"  type="jar" conf="client"/> 
     <artifact name="jboss-appclient"  type="jar" conf="client"/> 
     <artifact name="jboss-aspect-jdk50-client"  type="jar" conf="client"/> 
     <artifact name="jboss-client"  type="jar" conf="client,ant"/> 
     <artifact name="jboss-common-core"  type="jar" conf="client,ant"/> 
     <artifact name="jboss-ejb3-common-client"  type="jar" conf="client"/> 
     <artifact name="jboss-ejb3-core-client"  type="jar" conf="client"/> 
     <artifact name="jboss-ejb3-proxy-impl-client"  type="jar" conf="client"/> 
     <artifact name="jboss-ejb3-proxy-spi-client"  type="jar" conf="client"/> 
     <artifact name="jboss-ejb3-security-client"  type="jar" conf="client"/> 
     <artifact name="jboss-j2se"  type="jar" conf="client"/> 
     <artifact name="jboss-javaee"  type="jar" conf="client,javaee,ant"/> 
     <artifact name="jboss-logging-log4j"  type="jar" conf="client"/> 
     <artifact name="jboss-logging-spi"  type="jar" conf="client,ant"/> 
     <artifact name="jboss-messaging-client"  type="jar" conf="client"/> 
     <artifact name="jboss-remoting"  type="jar" conf="client"/> 
     <artifact name="jboss-security-spi"  type="jar" conf="client,ant"/> 
     <artifact name="jboss-serialization"  type="jar" conf="client,ant"/> 
     <artifact name="jboss-system-client"  type="jar" conf="client"/> 
     <artifact name="jboss-system-jmx-client"  type="jar" conf="client"/> 
     <artifact name="jbosssx-as-client"  type="jar" conf="client,ant"/> 
     <artifact name="jbosssx-client"  type="jar" conf="client,ant"/> 
     <artifact name="jmx-client"  type="jar" conf="client,ant"/> 
     <artifact name="jnp-client"  type="jar" conf="client"/> 
     <artifact name="jboss-mdr"  type="jar" conf="client"/> 
     <!--END from jbossall-client readme.txt --> 
     <!-- additional client-libs --> 
     <artifact name="jbosscache-core"  type="jar" conf="client"/> 
     <artifact name="trove"  type="jar" conf="client"/> 
     <artifact name="javassist"  type="jar" conf="client,hibernate"/> 
     <!-- END additional client-libs --> 
     <artifact name="activation"   type="jar" conf="activation"/> 
     <artifact name="mail"    type="jar" conf="mail"/> 
     <artifact name="jboss-javaee"  type="jar" conf="compile"/> 
     <artifact name="jboss-j2se"   type="jar" conf="compile"/> 
     <artifact name="jboss-system-jmx"  type="jar" conf="compile,jmx"/> 
     <artifact name="jbosscache-core"  type="jar" conf="compile"/> 
     <artifact name="jboss-remoting"   type="jar" conf="compile,ant"/> 
     <artifact name="jboss-kernel"  type="jar" conf="compile"/> 
     <artifact name="jboss-logging-spi"  type="jar" conf="compile, logging"/> 
     <artifact name="jboss-security-spi"   type="jar" conf="compile"/> 
     <artifact name="jboss-ejb3-ext-api"   type="jar" conf="server"/> 
     <artifact name="jboss-ejb3-core"  type="jar" conf="server"/> 
     <artifact name="jboss-integration"  type="jar" conf="compile,ant"/> 
     <artifact name="ejb3-persistence" type="jar" conf="hibernate"/> 
     <artifact name="hibernate-core"   type="jar" conf="hibernate"/> 
     <artifact name="hibernate-entitymanager" type="jar" conf="hibernate"/> 
     <artifact name="hibernate-annotations" type="jar" conf="hibernate"/> 
     <artifact name="hibernate-commons-annotations" type="jar" conf="hibernate"/> 
     <artifact name="jboss-system-client" type="jar" conf="server"/> 
     <artifact name="servlet-api"  type="jar" conf="servlet"/> 
     <artifact name="jbosssx"   type="jar" conf="server"/> 
     <artifact name="jmx-invoker-adaptor-client"  type="jar" conf="server,jmx,ant"/> 
     <artifact name="antlr" type="jar" conf="hibernate"/>  
     <artifact name="slf4j-api" type="jar" conf="server, logging"/> 
     <artifact name="slf4j-jboss-logging" type="jar" conf="server, logging"/> 
     <artifact name="jboss-aop-client" type="jar" conf="aop"/> 
     <artifact name="jbossjmx-ant" type="jar" conf="ant"/> 
    </publications> 
</ivy-module>