2016-10-31 12 views
0

Я обновляю некоторые RPM, которые изначально были сделаны с помощью файлов spec, чтобы использовать плагин Maven RPM. Первоначальная установка довольно запутанная, но включает в себя «общий» проект, который используется четырьмя другими проектами. Файлы спецификаций находились в этом общем проекте, а также сценарии оболочки, которые использовали параметры для указания определенных вещей (скажем, чтобы различать Project A и Project B при создании имен папок). Я хочу создать профили, которые обрабатывают параметр, который был передан в сценарии оболочки. Эти сценарии обрабатывают много вещей, которые я не хочу переделывать, если мне это не нужно. Есть ли способ использовать значения, которые я установил в профиле, чтобы действовать как параметры сценария оболочки, при условии, что я использую этот сценарий оболочки (минимально модифицированный) как postInstallScriptlet.Могу ли я использовать переменную в профиле Maven в качестве параметра для postinstallScriptlet с плагином RPM?

Все это на Linux (Centos 6).

Таким образом, профиль будет выглядеть примерно так:

<profile> 
    <id>beta</id> 
    <properties> 
     <ENVIRONMENT>Beta</ENVIRONMENT> 
     <INSTALL_DIR>/var/ProjA</INSTALL_DIR> 
    </properties> 
</profile> 

Файл сценария будет иметь что-то вроде этого:

ENVIRONMENT=$1 
INSTALL_DIR=$2 

Как я могу получить эти две вещи, чтобы работать вместе?

ответ

0

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

does-an-external-script-in-rpm-maven-plugin-have-access-to-maven-properties

и using-maven-rpm-plugin-how-do-i-to-replace-text-in-files-similar-to-the-assembly

Раздел плагин:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.1</version> 
    <executions> 
     <execution> 
     <id>copy-resources</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/bin</outputDirectory> 
      <resources> 
       <resource> 
        <!-- note that this will process all files in this directory -->     
        <directory>trunk/rpm_scripts/resources</directory> 
        <filtering>true</filtering> 
       </resources> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

Затем в профиле:

<profile> 
    <id>beta</id> 
    <properties> 
     <VERSION>5.0.0</VERSION> 
     <MODULE>Project A</MODULE> 
     <!-- and more --> 
    </properties> 
</profile> 

И в файле postinstallScriptlet:

VERSION=${VERSION} 
MODULE=${MODULE} 

Это приводит к тому, что файл копируется в каталог $ {basedir}/bin со всеми произведенными переменными. Это именно то, что мне нужно, поэтому я надеюсь, что это поможет кому-то другому.