<?xml version="1.0" encoding="UTF-8"?>
<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <parent>
    <artifactId>turbine-parent</artifactId>
    <groupId>org.apache.turbine</groupId>
    <version>7</version>
    <relativePath />
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>fulcrum-yaafi-crypto</artifactId>
  <groupId>org.apache.fulcrum</groupId>
  <version>2.0.1-SNAPSHOT</version>
  <name>Fulcrum YAAFI Crypto</name>
  <inceptionYear>2008</inceptionYear>
  <description>Fulcrum YAAFI Crypto Library</description>
  <url>http://turbine.apache.org/fulcrum/fulcrum-yaafi-crytpo</url>

  <!-- Required for staging to work -->
  <distributionManagement>
    <site>
      <id>turbine.apache.org</id>
      <url>https://turbine.apache.org/fulcrum/fulcrum-yaafi-crypto/</url>
    </site>
  </distributionManagement>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/tags/fulcrum-yaafi-crypto-1.0.7</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/tags/fulcrum-yaafi-crypto-1.0.7</developerConnection>
    <url>http://svn.apache.org/viewvc/turbine/fulcrum/tags/fulcrum-yaafi-crypto-1.0.7</url>
  </scm>
	
  <developers>
    <developer>
      <name>Siegfried Goeschl</name>
      <id>sgoeschl</id>
      <email>sgoeschl@apache.org</email>
      <organization />
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>
     <developer>
      <name>Georg Kallidis </name>
      <id>gk</id>
      <email>gk@apache.org</email>
      <organization />
      <roles>
        <role>Java Developer</role>
      </roles>
    </developer>
  </developers>

  <dependencies>
    <!-- testing dependencies -->
       <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13</version>
              <scope>test</scope>
		</dependency>
        <dependency>
            <groupId>org.apache.fulcrum</groupId>
            <artifactId>fulcrum-testcontainer</artifactId>
            <version>1.0.8</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
            <scope>test</scope>
      </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${turbine.log4j2.version}</version>
      <scope>test</scope><!-- change to provided ? -->
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
        <scope>test</scope>
    </dependency>    
  </dependencies>

  <build>
    <sourceDirectory>${basedir}/src/java</sourceDirectory>
    <testSourceDirectory>${basedir}/src/test</testSourceDirectory>
    <testResources>
      <testResource>
        <directory>src/test</directory>
        <includes> <include>**/*.xml</include><include>**/*.properties</include>
        </includes>
      </testResource>
    </testResources>
    
    <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>org.apache.fulcrum.jce.crypto.cli.CLI2</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>    
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <!-- 
            Integration Test encrypts and decrypts in one step
            mvn clean install integration-test 
            -->
        <executions>
          <execution>
            <id>init</id>
            <phase>integration-test</phase>
            <configuration>
              <skip>${skip.pw.encrypt}</skip>
              <target>
                 <touch file="${basedir}/target/integration-test/filter-integration-test.properties" mkdirs="true" />
                <ant antfile="${basedir}/src/ant/integration-test-build-pw.xml" target="init">
                  <property name="build.path" value="${basedir}/build" />
                   <property name="password" value="${test.password}" />
                  <property name="meta.pw" value="${meta.pw}" />
                  <property name="jarname" value="${project.build.finalName}" />
                  <!-- generates encrypted password, saved in vcs: -->
                  <property name="target.property.path" value="${basedir}/target/integration-test/filter-integration-test.properties" />
                </ant>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
          <execution>
            <id>build</id>
            <!-- 
            1) run mvn package to generate executable jar 
            2) mvn generate-sources -Dskip.pw.gen=false 
            to generate encrypted password 
            -->
            <phase>integration-test</phase>
            <configuration>
              <skip>${skip.pw.gen}</skip>
              <target>
                <touch file="${basedir}/target/integration-test/filtered-pw.properties" mkdirs="true" />
                <ant antfile="${basedir}/src/ant/integration-test-build-pw.xml" target="build">
                  <property name="build.path" value="${basedir}/build" />
                  <property name="meta.pw" value="${meta.pw}" /><!-- 
                    provided by env variable -->
                  <property name="jarname" value="${project.build.finalName}" />
                  <!-- contains encrypted password, saved in vcs: -->
                  <property name="source.property.path" value="${basedir}/target/integration-test/filter-integration-test.properties" />
                  <!-- should not be saved in vcs: -->
                  <property name="target.property.path" value="${basedir}/target/integration-test/filtered-pw.properties" />
                </ant>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>

        </executions>
      </plugin>
      
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <forkCount>1</forkCount>
            <reuseFork>true</reuseFork>
           </configuration>
        </plugin>
    </plugins>
  </build>
  
  <properties>
    <turbine.site.path>fulcrum/fulcrum-yaafi-crypto</turbine.site.path>
    <turbine.scmPubCheckoutDirectory>${turbine.site.cache}/fulcrum/yaafi-crypto</turbine.scmPubCheckoutDirectory>
    <turbine.site.cache>${project.build.directory}/turbine-sites</turbine.site.cache>
    <siteContent.path>${project.build.directory}/staging</siteContent.path><!-- default stagingSiteURL -->

    <skip.pw.encrypt>false</skip.pw.encrypt>
    <skip.pw.gen>false</skip.pw.gen>
    <meta.pw>changeit</meta.pw>
    <test.password>mypassword</test.password>
  </properties>  
	
</project>
