我有一個將使用大量web服務的maven項目。該應用程序將被打包爲WAR。到目前爲止,客戶的代碼已經生成cxf-codegen-plugin
,在generate-sources
階段。默認情況下,將生成的源文件放入target/generated-sources/cxf
,並在compile
之後將它們編譯並與target/classes
中的應用程序類混合。生成的和應用程序類都可以共享一級包。使用Maven和cxf-codegen插件打包JAR中的WSDL客戶端
我希望每個客戶端都打包在WAR文件中的WEB-INF/lib
之內的自己的JAR中。我發現大約-clientjar
,但它只生成.jar
文件並將它們放入target/generated-sources/cxf
,並且JAR最終還會在target/classes
以及編譯的類中,這是毫無意義的。
我猜想compile
插件在某些時候正在編譯生成的源文件到target/classes
,並且可能還有另一個階段也在移動JAR。是否有可能讓Maven避免編譯那些生成的源代碼(或者甚至根本不生成源代碼,只有JAR),並且針對CXF生成的JAR編譯應用程序類?
我知道有可能通過爲每個webservice定義一個帶有jar包模塊的multimodule項目來實現此目的,但是我想避免使用此選項。可能會有大量的Web服務,並且不適合爲每個服務維護一個獨立的模塊。由於-clientjar
我已經被迫爲每個WSDL定義一個<wsdlOption>
,以便爲每個WSDL提供JAR名稱(不可能讓cxf-codegen-plugin
只掃描src/main/resources/wsdl
或<wsdlRoot>
)。
當然,客戶端JAR可以在Maven之外生成並安裝到本地存儲庫,並且可以在項目中定義爲依賴關係,但是我想知道是否可以在單個Maven構建中執行此操作。
對於程序集,我可能會理清如何將-clientjar
生成的JAR文件放置到WEB-INF/lib
中,但WAR內生成的類仍然存在問題。
我對Maven構建生命週期及其可能性沒有深入的瞭解,任何建議或指針都非常受歡迎。
[這個問題](http://stackoverflow.com/q/23338077/851811)似乎要求類似的東西。 – 2014-09-03 15:32:32
我最終創建了一個包含主項目和另一個聚合器_and_父項目的聚合器,它將子項'wsdl2java'設置爲子項目文件夾中每個'wsdl'的一個jar。不完全是我想要的,但工作正常(涉及編寫一個虛擬的'pom.xml'文件來指定工件名稱和groupId並將其添加到每個要添加的每個新WS客戶端的'')。 –
2014-09-04 07:36:57
爲什麼不將解決方案作爲答案而不是評論發佈? – alkis 2014-09-10 21:29:58