在maven安装时创建配置文件,无需或在安装Karaf功能之前

时间:2017-04-12 14:13:22

标签: maven osgi apache-karaf osgi-bundle karaf

在我的项目中,在resource目录的bundle模块中,我有一个示例startup.cfg文件。此文件包含我要在启动时使用的属性。在捆绑pom.xml中,我有以下内容。

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <executions>
        <execution>
          <id>attach-artifacts</id>
          <phase>package</phase>
          <goals>
            <goal>attach-artifact</goal>
          </goals>
          <configuration>
            <artifacts>
              <artifact>
                <file>${project.build.directory}/classes/startup.cfg</file>
                <type>cfg</type>
                <classifier>config</classifier>
              </artifact>
            </artifacts>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

在我的功能xml中,我有,

<feature name="my-sample-feature" description="Sample service" version='${project.version}'>
    <bundle>mvn:org.sample.app/service.implementation/{{VERSION}}</bundle>
    <configfile finalname="/etc/org.sample.app.startup.cfg">mvn:mvn:org.sample.app/service.implementation/{{VERSION}}/cfg/config</configfile>
</feature>

在功能xml中,我添加了

<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>service.implementation</artifactId>
  <version>${project.version}</version>
  <classifier>config</classifier>
  <type>cfg</type>
</dependency>

此功能也是一项启动功能。现在,当我在karaf容器中安装该功能时,或者在我旋转karaf的情况下,只有这时才创建etc/org.sample.app.startup.cfg。我的目标很简单,只需要安装此特殊文件,而不管是否安装此功能,该文件始终位于etc/

1 个答案:

答案 0 :(得分:0)

安装此功能时,cfg文件将部署到etc文件夹中。如果你希望它独立于安装或不安装的功能,这意味着你必须手动将其部署到等等,这就像你在你的pom中一样将cfg附加到你的工件后更简单。

请记住,如果您想要遵循最佳实践(特别是在生产环境中),请不要将cfg部署与其原始功能分开。