2011-05-05 86 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