Maven: Read property file and copy resources

2020-08-01 18:49发布

问题:

I am into some scenario that is, read a properties file, and based on the value of property file create folder and copy resources from some directory to it.

properties-file: xyz.properties

CLIENTLIST=A,B

I want to perform following steps in maven.

1. From above properties file pom should read the property.
2. In loop I want to create folders by name A and B. 
3. After creating folder i want to copy some resources into it.
  ex: after creating folder A , want to copy some resource files from x/y/z directory.

Is it possible in maven ?

回答1:

I did this using couple of plugins,

<plugins>
 <plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>properties-maven-plugin</artifactId>
   <version>1.0.0</version>
   <executions>
   <execution>
   <id>read property file</id>
   <phase>install</phase>
   <goals>
     <goal>read-project-properties</goal>
   </goals>
   <configuration>
     <files>
        <file>${basedir}/dirOne/xyz.properties</file>
     </files>
   </configuration>
   </execution>
   </executions>
</plugin>

<plugin>
  <groupId>com.soebes.maven.plugins</groupId>
  <artifactId>iterator-maven-plugin</artifactId>
  <version>0.3</version>
  <executions>
   <execution>
    <phase>install</phase>
    <goals>
      <goal>iterator</goal>
     </goals>
     <configuration>
       <content>${CLIENTLIST}</content>
       <pluginExecutors>
       <pluginExecutor>
       <plugin>
 <artifactId>maven-resources-plugin</artifactId>
 <version>2.6</version>
 </plugin>
 <goal>copy-resources</goal>
 <configuration>
    <outputDirectory>${basedir}/dirTwo/@item@/</outputDirectory>
    <resources>
    <resource>
      <directory>${basedir}/src/main/resources/</directory>
      <includes>
        <include>**/*.xml</include>
        <include>**/*.properties</include>
      </includes>
      <excludes><exclude>**/*.cmd</exclude></excludes>
    </resource>
    </resources>
  </configuration>
  </pluginExecutor>
  </pluginExecutors>
  </configuration>
  </execution>
  </executions>
  </plugin>
  </plugins>
</build>

I have used properties read, iterator and copy-resources plugin to get what I needed.

  1. First I read property file.
  2. In loop iterated values which read from properties file.
  3. And created folder each in loop and copied resources to created folder.