Oleg Atamanenko
Столкнулся с такой проблемой - в некоторых случаях приложение, собранное антом не работает. Конкретно - не работает десереализация запросов на веб-сервис. Получаемый запрос содержит null в значениях полей.
Опытным путём было выяснено, что на это влияет используемая версия Java. Под 1.5 работает корректно, под 1.6 - не работает. Нашли ошибку в метро, связанную именно с версией JDK и на этом успокоились. Но было одно исключение из правил. У одного из разработчиков под 1.5 тоже не работало.
Как выяснилось позже, виноват был во всё Ant. Metro создавал файл package-info.java, в котором было примерно следующее содержание:
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://z.y.x.com",
elementFormDefault=javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED)
package com.x.y.z;
Ант, в свою очередь, должен был этот файл компилировать. А в реальности этого не происходило, поэтому Metro не мог корректно отобразить XML-запрос на объекты доменной области.
Решение было немного кривым, но при этом поразительно простым - принудительный вызов javac на файлах package-info.java
.