2011-05-05 82 views
2

我試圖得到一個簡單的GWT 2.3項目DevMode的工作與構建Ant Ivy。我已經使用了常青藤項目GWT之前的2.3(特別是GWT的2.0.x),和下面的依賴關係(在我的常青藤模塊XML文件)在過去的工作對我來說(我已刪除的具體名字我的常春藤配置,並告訴他們爲 「...」 下面。)GWT 2.3從螞蟻常春藤GWT-servlet的deps.jar建立

<dependency org="com.google.gwt" name="gwt-dev" rev="2.3.0" conf="..." /> 
<dependency org="com.google.gwt" name="gwt-servlet" rev="2.3.0" conf="..." /> 
<dependency org="com.google.gwt" name="gwt-user" rev="2.3.0" conf="..." /> 

我的GWT編譯(當調用GWT的Java-to-JavaScript編譯)失敗但使用上述GWT 2.3下。特別是,有幾個錯誤類似以下內容:

[java] [ERROR] Errors in 'jar:file:/../gwt-user-2.3.0.jar!/com/google/gwt/editor/client/EditorDriver.java' 
[java] [ERROR] Line 97: No source code is available for type javax.validation.ConstraintViolation<T>; did you forget to inherit a required module? 

的可能相關文獻網上搜索後,我發現threads like this one關於類似問題的同時,從源代碼編譯的2.3候選發佈版。這些線程frequently mention,人們需要在編譯類路徑,這似乎是勞動果實周圍this issue在GWT問題跟蹤系統包括一個gwt-servlet-deps.jar

當然與常春藤它的不太一樣,因爲我看到了意見。上述<dependency...規則不會出現下載gwt-servlet-deps.jar(而不是下載GWT的官方分佈,其中該JAR的特殊副本可以找到)。

所以我推斷出,在常春藤宇宙,我可能需要添加這樣的事情:

<dependency org="javax.validation" name="validation-api" rev="1.0.0.GA" conf="..."/> 

...,我想我是太糟糕了,屁股甚至有這種想法(我似乎成爲永恆的新手艾維& Maven世界)但是,唉,我仍然得到相同的錯誤。

顯然,Java-to-Javascript編譯器會喜歡源代碼,而不僅僅是字節碼jar,但我不知道如何告訴Ivy去獲取它們。我覺得我很近,因爲我發現this thread顯示了一個Ant任務,它將兩個驗證jar文件複製到lib(包括字節碼和源代碼),但我需要一些幫助來連接Ivy世界的點。

我怎麼會告訴艾維搶來源罐子?

回答

2
<?xml version="1.0" encoding="UTF-8"?> 
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" 
xmlns:m="http://ant.apache.org/ivy/maven"> 

<dependency org="javax.validation" name="validation-api" rev="1.0.0.GA"> 
<artifact name="validation-api"/> 
<artifact name="validation-api" m:classifier="sources"/> 
</dependency> 

來源:http://groups.google.com/group/google-web-toolkit/browse_thread/thread/4744e62fb088ba60?pli=1

感謝菲利普·索薩

+0

你能重現Filipe的結果嗎?我嘗試了,我得到一個錯誤:'不可能常春藤檢索:java.lang.RuntimeException:在檢索期間的問題模塊javax.validation#validation-api; 1.0.0.GA的多個工件被檢索到相同的文件!更新檢索模式以修復此錯誤。「我不確定它們在此上下文中的」檢索模式「是什麼意思。 – pohl 2011-05-06 15:11:06

+1

我認爲你給了我需要的幫助。經過一些閱讀和試驗後,我發現我需要修改驅動Ivy的Ant構建文件中'ivy:retrieve'元素的'pattern'屬性的模式。特別是,我需要在此末尾添加括號分類位:'' – pohl 2011-05-06 17:43:51

1

如果該存儲庫的常春藤庫(用於文物的ivy.xml文件),這個答案可能會幫助:

您將需要specifiy驗證API,包括源下的conf。

<dependency org="javax.validation" name="validation-api" rev="1.0.0.GA" conf="compile->sources"/> 

其中編譯爲本地配置和來源將是與來源罐子的配置。

進行驗證-API的的ivy.xml必須看起來像這樣(我不知道它是什麼樣子在你的倉庫):

<configurations> 
    <conf name="compile" visibility="public"/> 
    <conf name="source" visibility="public"/> 
</configurations> 
<publications> 
    <artifact name="validation-api" type="jar" conf="compile" ext="jar"/> 
    <artifact name="validation-api-src" type="jar" conf="source" ext="jar"/> 
</publications> 

這會告訴常春藤有兩個罐子驗證api可用。一個正常的(編譯)和一個特殊的(與源)。你將不得不指定要檢索的conf。

+0

有趣。我不認爲'publications'元素是我在我的常青藤模塊文件中看到的。 「知名度=」公開「是你的解決方案的基本要素嗎? – pohl 2011-05-06 15:17:58

+0

閱讀有關出版物標籤[此處](http://ant.apache.org/ivy/history/2.0.0/ivyfile/publications.html),並注意它說_用於描述由此module_發佈的工件,我感到困惑:我不是驗證-API常青藤模塊的維護者。你是否暗示這是他們必須做的事情? – pohl 2011-05-06 15:22:08

+0

如果您的存儲庫包含常青藤工件,那麼ivy.xml應該包含這樣的信息。但如果它是一個Maven倉庫,其他答案可能是最好的方法;) – oers 2011-05-07 07:41:41