#c #maven-2 #build-automation #autotools
Вопрос:
Я работаю над коллекцией компонентов MATLAB, Java и C/C , которые взаимодействуют, но имеют совершенно разные этапы компиляции/установки. В настоящее время мы ничего не компилируем для MATLAB, используем maven2 для сборки Java и модульных тестов, а также используем autotools для сборки и модульных тестов на C/C .
Я хотел бы перенести все в единую систему сборки и модульного тестирования, используя maven2, но не смог найти плагин, который позволит потоку кода C/C оставаться на основе autotools и просто обернуть его в сборку maven. Необходимость удалить поддержку autotools и воссоздать все зависимости в maven, скорее всего, нарушит условия сделки, поэтому я ищу способ, чтобы maven и autotools могли хорошо работать вместе, а не выбирать между ними.
Возможно ли это или даже желательно? Есть ли там ресурсы, которые я упустил из виду?
Ответ №1:
Я действительно не знаю autotools, но не можете ли вы использовать плагин maven exec, который позволяет выполнять системные команды (или программы Java)? Например:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>exec-one</id>
<phase>compile</phase>
<configuration>
<executable>autogen</executable>
<arguments>
<argument>-v</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
<execution>
<id>exec-two</id>
<phase>compile</phase>
<configuration>
<executable>automake</executable>
<arguments>
<argument>-v</argument>
<argument>[other arguments]</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Я не проверял приведенный выше фрагмент pom, но он дает вам некоторые подсказки о том, как действовать дальше.
Комментарии:
1. Я искал какой-то способ, чтобы мне не нужно было переводить каждую команду maven в системную команду. Это усложняет обслуживание и далеко не так чисто, как сборка Java. Если мне в конечном итоге придется все писать, я, вероятно, в конечном итоге буду работать за пределами maven для инструментов C/C .
Ответ №2:
Вы упустили из виду родительский пакет maven cbuild. взгляните на раздел «make-maven-плагин» для получения более подробной информации.
Комментарии:
1. Это выглядит многообещающе, но они все еще претендуют только на статус альфа. Определенно есть что-то, что можно отследить и точно в соответствии с тем, что я искал. Я обновлю больше после того, как протестирую доступные функции.