gwt 2.3 gwt-servlet-deps.jar из сборки Ant Ivy

Я пытаюсь получить простой проект GWT 2.3, работающий в DevMode, с помощью сборки Ant Ivy. Я использовал Ivy для проектов GWT до 2.3 (в частности, GWT 2.0.x), и в прошлом у меня работали следующие зависимости (в моем XML-файле модуля Ivy): (Я удалил определенные имена для своих конфигураций 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, который необходимо включить в путь к классам компиляции, что, по всей видимости, является плодом труда над this issue в системе отслеживания проблем GWT.

Конечно, с Айви это не совсем то же самое, что совет, который я вижу. Приведенные выше <dependency... правила не используются для загрузки gwt-servlet-deps.jar (в отличие от загрузки официального дистрибутива GWT, в котором можно найти специальную копию этого jar-файла).

Итак, я рассудил, что во вселенной Плюща мне, вероятно, нужно добавить что-то вроде этого:

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

... и я думал, что был довольно крутым из-за того, что у меня возникла эта идея (я, кажется, вечный новичок в мире Ivy & Maven), но, увы, я все еще получаю те же ошибки.

Очевидно, компилятору Java-to-Javascript нужны исходники, а не только банка с байт-кодом, но я не знаю, как сказать Айви, чтобы она их забрала. Я чувствую себя близко, потому что нашел этот поток, который показывает задачу Ant, которая копирует два проверочных jar-файла в библиотеку (как байт-код, так и исходный код), но мне нужна помощь, чтобы соединить точки для мира Ivy.

Как мне сказать Айви взять исходную банку?


person pohl    schedule 05.05.2011    source источник


Ответы (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

Спасибо Филипе Соуза

person Gardella Juan    schedule 06.05.2011
comment
Удалось ли вам воспроизвести результат Филипе? Я попробовал и получил сообщение об ошибке: impossible to ivy retrieve: java.lang.RuntimeException: problem during retrieve Multiple artifacts of the module javax.validation#validation-api;1.0.0.GA are retrieved to the same file! Update the retrieve pattern to fix this error. Я не уверен, что они имеют в виду под шаблоном извлечения в этом контексте. - person pohl; 06.05.2011
comment
Я думаю, ты дал мне необходимую поддержку. После некоторого чтения и экспериментов я обнаружил, что мне нужно изменить шаблон атрибута pattern элемента ivy:retrieve в файле сборки Ant, который управляет Ivy. В частности, мне нужно было добавить бит классификатора в скобках в конце этого: <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision](-[classifier]).[ext]" /> - person pohl; 06.05.2011

Если репозиторий является репозиторием ivy (файлы ivy.xml для артефактов), этот ответ может помочь:

Вам нужно будет указать conf API проверки, который включает источники.

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

где compile - это ваша локальная конфигурация, а sources - это конфигурация для jar-файла с исходниками.

Ivy.xml для validation-api должен выглядеть так (я не знаю, как он выглядит в вашем репозитории):

<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>

Это сообщит плющу, что есть два доступных jar-файла для api-валидации. Один нормальный (компилировать) и один специальный (с исходниками). И вам нужно будет указать, какую конфигурацию нужно получить.

person oers    schedule 06.05.2011
comment
Интересно. Я не распознаю элемент publications как что-либо, что я видел в моем файле модуля плюща. Является ли visibility="public" важным элементом вашего решения? - person pohl; 06.05.2011
comment
Прочитав здесь о теге публикаций и заметив, что в нем говорится, что используется для описания артефактов, опубликованных этим модулем, я запутался: я не поддерживаю модуль validation-api Ivy. Вы предполагаете, что им придется это сделать? - person pohl; 06.05.2011
comment
если ваш репозиторий содержит артефакты плюща, ivy.xml должен содержать такую ​​информацию. Но если это репозиторий maven, другой ответ может быть лучшим подходом;) - person oers; 07.05.2011