2013-12-12 3 views
3

У нас есть сборка maven, которая создает файл уха, который включает библиотеки с объектами JPA во внутренней папке lib. Файл ухо имеет одну persistence.xml, где мы добавим объекты, используя <jar-file> тег:Проблемы с именем файла Jar в persistence.xml

<persistence-unit name="some-id"> 
    <jar-file>MyEntities-1.0.0-SNAPSHOT.jar</jar-file> 

MyEntities Lib построен с отдельным проектом Maven.

Это прекрасно работает, пока сборка выполняется локально, iaw, я использую только mvn install и не разворачиваю ее в удаленный репозиторий снимков. Он терпит неудачу, когда мы начинаем развертывание в репо из-за различных имен файлов JAR в локальном .m2 репо и удаленный репозиторий:

mvn install создает файл с именем MyEntities-1.0.0-SNAPSHOT.jar на локальном репо, mvn deploy файл с именем MyEntities-1.0.0-20131212-145600-42.jar на удаленном хранилище ,

Теперь, если кто-то развернулся после моей последней локальной сборки и maven ищет новые обновления моментальных снимков (на основе политики или с флагом -U), он вытаскивает удаленный файл в локальное репо, а банка с именем THAT копируется на ухо , что вызывает ошибки JPA во время развертывания, поскольку сущности не могут быть найдены (другой файл jar, объявленный в файле persistence.xml).

Есть ли решение этой проблемы, кроме того, что вы всегда строите локально, прежде чем собирать файл уха?

+0

Я думаю, вы должны проверить документацию развертывания-плагин ... Посмотрите этот http://maven.apache.org/ plugins/maven-deploy-plugin/usage.html и поиск параметра -Dfile. –

+0

Не нравится этот подход, поскольку он изменяет соглашение об именах развернутых артефактов моментальных снимков. Плюс я столкнулся с проблемами при столкновении номеров версий или выпуске, потому что теперь у меня будет номер версии, заданный параметрами плагина развертывания. –

+0

Просто спекулировать: у вас по-прежнему есть такая же проблема, если вы делаете чистку amvn перед развертыванием amvn? –

ответ

0

Это работает для нашего проекта:

<persistence-unit name="foo"> 
    <!-- property comes from root pom.xml --> 
    <jar-file>../lib/foo-${bar.version}.jar</jar-file> 
    <properties> 

    </properties> 
</persistence-unit> 

<build> 
    <resources> 
     <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>META-INF/persistence.xml</include> 
       </includes> 
     </resource> 
    </resources> 
</build> 
Смежные вопросы