Использование maven2 для создания пакета autotools на основе C/C

#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. Это выглядит многообещающе, но они все еще претендуют только на статус альфа. Определенно есть что-то, что можно отследить и точно в соответствии с тем, что я искал. Я обновлю больше после того, как протестирую доступные функции.