簡體   English   中英

Maven ejb-client生成依賴性排除

[英]Maven ejb-client generation dependency exclusion

我們有一個解決方案,我們的UI項目通過使用EJB客戶端依賴項包含了大量業務服務。 Maven上的問題在於,即使客戶端.jar通常包含大約1-2個類,它們也會帶來整個服務應用程序的完整依賴性堆棧。 這可以得到一個有點難看,當的.ear文件開始成長到50-100Mb彈出有不時感謝無關依賴潛入的方式進入UI應用討厭的錯誤。

當然,我們總是可以排除客戶端上的依賴關系,但是我們必須使用這些服務為每個客戶端項目編寫相同的一行,這是很多不必要的重復。 此外,人們提出了最奇怪的錯誤消息並使用大量時間跟蹤它們,然后再記得提到它們包含一些客戶端jar並且沒有檢查它帶來了什么額外的依賴性。

例:

        <dependency>
            <groupId>fi.path.to.service</groupId>
            <artifactId>customermanagement-common</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>fi.path.to.service</groupId>
            <artifactId>customermanagement-service</artifactId>
            <classifier>client</classifier>
            <exclusions>
                <exclusion>
                    <groupId>fi.path.to.dependency</groupId>
                    <artifactId>internal-dependency-#1</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.castor</groupId>
                    <artifactId>castor</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>fi.path.to.dependency</groupId>
                    <artifactId>internal-dependency-#2</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#3</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#4</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#5</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-xml</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-codegen</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>castor-xml-schema</artifactId>
                    <groupId>org.codehaus.castor</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>internal-dependency-#6</artifactId>
                    <groupId>fi.path.to.dependency</groupId>
                </exclusion>
            </exclusions>
            <version>2.6</version>
        </dependency>

這只是一個服務客戶端被包含在內,想象在幾個不同的應用程序中有幾個並且你得到了圖片,每次寫入所有排除非常煩人並且項目POM開始變得相當漫長。

我會將依賴項標記為已提供,但是如果它們不存在,則會有一些依賴項在運行時崩潰。 比如那些包含另一個帶有外部Exception類的應用程序的服務調用,這不是出於某種原因而包含在服務項目中,並且如果不存在則會在運行時導致ClassNotFoundException。

因此,我知道通過在maven-ejb-plugin上使用pom.xml規范,可以在ejb客戶端生成期間排除/包含類,但是有沒有辦法排除依賴項?

似乎Maven不支持很好地從一個模塊中構建多個罐子。

因此,我們發現的唯一合理的方法是創建另一個模塊(將xxx-service轉換為xxx-service和xxx-service-client)並將xxx-service-client模塊配置為僅具有EJB客戶端/委托類和最小依賴項。 這樣,項目就可以通過一次執行來構建。

我在這里遇到同樣的問題。 認為一個解決方案可能是使用配置文件,因為在每個配置文件中,您可以指定依賴項(請參閱http://blog.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-項目 - 為什么你不應該/

在我的情況下,這不起作用,因為我需要在Maven的單次執行中生成兩個JAR(ejb和ejb-client)。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM