[英]Maven - how to handle generated classes
我的困境是我對maven中生成的源文件有疑問。
我正在嘗試從WSDL生成一些類,我真的不知道處理生成的源文件的標准方法是什么。
有關此問題的最佳做法是什么? 任何幫助或建議表示贊賞。
謝謝你的回答,馬克
我遇到的生成代碼的大多數Maven插件遵循將生成的Java源文件放在target/generated-sources
文件夾的子目錄中的約定。 例如, Maven 2 JAXB 2.x插件在target/generated-sources/xjc
文件夾中生成Java源target/generated-sources/xjc
。
只要構建是可重復的,我就不需要將生成的源提交到我的源代碼存儲庫。 所以我通常配置我的Git , Mercurial , SVN或我用來忽略target
下的所有內容。
我通常手動編輯.classpath
文件以包含Eclipse的源文件夾,並將.classpath
和.project
文件存儲在源代碼存儲庫中。
這是一個例子:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" path="target/generated-sources/xjc"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
請務必注意,某些Maven插件不會將生成的源附加到POM。 您可以使用Build Helper Maven插件來實現此目的。
我從來沒有找到一種標准的方法來處理生成的源文件。 但是,根據我的經驗,我會向您推薦以下內容:
- 我應該在哪里生成.java源文件? (src / main / java,src / main / generated)
- 我應該將它們包含在源代碼管理下,還是在簽出后生成它們
- 如果我不使用src / main / java文件夾,如何說服Eclipse自動“看到”那些類作為源文件夾?
- 我真的需要.java文件,還是只需要.class-es?
在使用JAXB多年后,僅僅是我的兩分錢,主要用於WSDL到Java的生成。
這是我多年后的建議: 將所有代碼生成放在一個單獨的maven項目中,並在需要生成代碼的正常項目中依賴它。
mvn install
為其生成mvn install
。 mvn install
雖然多模塊方法在實踐中似乎是一個好主意但它變得非常令人煩惱,因為如果有新的SNAPSHOT,每次拉動時Eclipse都會失去同步。
如果生成的代碼沒有生成,那么通常只是釋放它,因此它不是SNAPSHOT(顯然這需要設置正確的maven存儲庫)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.