2

我正在尝试使用Ant Ivy构建在 DevMode 中工作的简单 GWT 2.3 项目。我在 2.3 之前的 GWT 项目(特别是 GWT 2.0.x)中使用了 Ivy,并且过去的以下依赖项(在我的 Ivy 模块 xml 文件中)对我有用:(我已经删除了我的 Ivy 配置的特定名称,并将它们显示为下面的“...”。)

<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-compile(当调用 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?

在在线搜索可能相关的参考资料后,我在从源代码构建 2.3 的候选版本时发现了类似问题的线程。这些线程经常提到一个gwt-servlet-deps.jar需要包含在编译类路径中的内容,这似乎是GWT 问题跟踪系统中围绕此问题的劳动成果。

当然,对于 Ivy,它与我所看到的建议并不完全相同。上面的<dependency...规则似乎没有下载a 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 去获取它们。我觉得我很接近了,因为我发现这个线程显示了一个 Ant 任务,它将两个验证 jar 复制到 lib(字节码和源代码),但我需要一些帮助来连接 Ivy 世界的点。

我将如何告诉 Ivy 获取源 jar?

4

2 回答 2

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

感谢菲利普·索萨

于 2011-05-06T11:51:56.023 回答
1

如果存储库是常春藤存储库(用于工件的 ivy.xml 文件),则此答案可能会有所帮助:

您需要指定验证 api 的 conf,其中包括源。

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

其中 compile 是您的本地配置,而 sources 将是带有源的 jar 的配置。

用于验证 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>

这会告诉 ivy 有两个可用的验证 api 罐子。一个普通的(编译)和一个特殊的(带有源代码)。而且您必须指定要检索的 conf。

于 2011-05-06T06:46:54.850 回答