Maven Сборка поколения - PullRequest
       9

Maven Сборка поколения

3 голосов
/ 03 апреля 2009

В настоящее время мы пытаемся упаковать небольшое приложение таким образом, чтобы у нашей оперативной команды было намного проще развернуть его. Мои требования состоят в том, чтобы проекты компилировались и архивировались.

Я запускаю команду "mvn -DmyProfile clean clean generate-sources package" из командной строки и создаю файл src.xml, в котором подробно указывается, куда должен идти файл, в дополнение к объявлению об использовании формата zip для вывода.

В результате я получаю 2 файла в моей целевой папке, jar и zip файл. Zip-файл структурирован именно так, как мне нужно, за исключением того, что мои файлы свойств не были введены с правильными значениями из POM. Вместо этого все {переменные} все еще там. С другой стороны, в банке, похоже, введены все нужные значения, но мне не нужна структура банки.

Кикер в том, что эта проблема возникает только потому, что я пытался добавить Java Service Wrapper в свой проект, и мне нужно было иметь файл src.xml, чтобы объявить, куда должны идти все новые файлы в структуре папок проекта. До этого точно такая же команда работала бы отлично, и даже структура jar более соответствовала реальной структуре проекта в Eclipse.

Не обвиняя Java Service Wrapper, просто интересуюсь, не пытаясь заставить все работать на этом фрагменте, я не создавал конфликт со сборкой MVN.

Любая помощь очень ценится.

Спасибо, Yann

Ответы [ 2 ]

1 голос
/ 07 апреля 2009

Получается, что Maven создает банку «снимка», которая включается в папку lib внутри архива Zip. Этот моментальный снимок jar содержит файлы конфигурации с правильными значениями. Другими словами, если вы загружаете свои файлы конфигурации, используя загрузчик классов вместо ссылки на файловую систему, это должно работать.

Во всяком случае, мне сказали не помещать файлы конфигурации в корень архива Zip. Таким образом, файлы конфигурации, которые Maven просто вставлял в архив, не вставляя их, в моем случае даже не должны присутствовать.

Но вот новое содержимое моего файла src.xml, которое включено в файл pom.xml:

<assembly>
<id>bin</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
    <format>zip</format>
</formats>
<fileSets>
    <fileSet>
        <directory>src/main/bin</directory>
        <outputDirectory>/bin</outputDirectory>
        <includes>
            <include>**/*.sh</include>
        </includes>
        <fileMode>777</fileMode>
    </fileSet>
    <fileSet>
        <directory>lib</directory>
        <outputDirectory>/lib</outputDirectory>
        <includes>
            <include>**/*.jar</include>
        </includes>
    </fileSet>
    <!-- Wrapper files -->
    <fileSet>
        <directory>lib/wrapper</directory>
        <outputDirectory>/lib</outputDirectory>
        <includes>
            <include>**/*</include>
        </includes>
    </fileSet>
    <fileSet>
        <directory>src/main/bin/wrapper</directory>
        <outputDirectory>/bin/wrapper</outputDirectory>
        <includes>
            <include>**/*</include>
        </includes>
        <fileMode>777</fileMode>
    </fileSet>
    <fileSet>
        <directory>src/main/conf</directory>
        <outputDirectory>conf</outputDirectory>
        <includes>
            <include>**/*</include>
        </includes>
    </fileSet>
</fileSets>
<dependencySets>
    <dependencySet>
        <outputDirectory>/lib</outputDirectory>
        <includes>
            <include>*:jar:*</include>
        </includes>
        <excludes>
            <exclude>*:sources</exclude>
        </excludes>
    </dependencySet>
</dependencySets></assembly>

Это все еще выводит jar и zip архив, но, поскольку zip содержит jar снимка, все должно быть в порядке.

КРОМЕ ... (и это может быть для другого поста, поэтому дайте мне знать, если я уйду от темы для этого вопроса)

То, что значения, введенные в конфигурационные файлы, не совпадают с профилями в моем файле POM.xml. Они из моего файла settings.xml, который находится в моей папке .m2. Но отключение активации в профиле settings.xml, похоже, не решает эту проблему:

<activation>
<activeByDefault>false</activeByDefault>
</activation>

Снова вот командная строка, которую я запускаю:

mvn -Denv-prod clean generate-sources package

Где "env-prod" - это профиль в файле pom.xml, содержащий значения для внедрения.

Есть идеи?

0 голосов
/ 08 апреля 2009

Хорошо, так что я нашел ответ на мою вторую проблему. Команда maven была неверной, то, что я успешно выполнил, было:

mvn clean package -P env-prod

И это помещает правильные значения в правильные места в моих файлах конфигурации. Обратите внимание на использование переключателя -P вместо -D для выбора профиля.

...