<!--
  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">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>org.apache.activemq</groupId>
      <artifactId>artemis-pom</artifactId>
      <version>2.28.0</version>
   </parent>

   <artifactId>artemis-website</artifactId>
   <packaging>jar</packaging>
   <name>ActiveMQ Artemis Website</name>

   <properties>
      <activemq.basedir>${project.basedir}/..</activemq.basedir>
      <webapp-dir>${project.artifactId}-${project.version}</webapp-dir>
      <src-dir-user-manual>${basedir}/../docs/user-manual/en</src-dir-user-manual>
      <scratch-dir-user-manual>${basedir}/target/scratch/user-manual</scratch-dir-user-manual>
      <webapp-outdir-user-manual>${basedir}/target/classes/user-manual</webapp-outdir-user-manual>
      <webapp-outdir-hacking-guide>${basedir}/target/classes/hacking-guide</webapp-outdir-hacking-guide>
      <webapp-outdir-migration-guide>${basedir}/target/classes/migration-guide</webapp-outdir-migration-guide>

      <placeholderJavadocDir>${basedir}/src/placeholder/javadoc</placeholderJavadocDir>
      <skipPlaceholderJavadocGeneration>false</skipPlaceholderJavadocGeneration>

      <frontend-maven-plugin-version>1.12.1</frontend-maven-plugin-version>
      <nodeVersion>v16.14.0</nodeVersion>
      <npmVersion>8.3.1</npmVersion>
      <skipWebsiteDocGeneration>false</skipWebsiteDocGeneration>
      <skipWebsiteJavadocGeneration>false</skipWebsiteJavadocGeneration>
   </properties>

   <build>
      <plugins>
         <!-- A placeholder content for the assembly. This is disabled when using the
              release profile and thus activating the real (/slow) javadoc generation -->
         <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
               <execution>
                  <id>fallback-javadoc-jar</id>
                  <phase>package</phase>
                  <goals>
                     <goal>jar</goal>
                  </goals>
                  <configuration>
                     <doctitle>ActiveMQ Artemis ${project.version} API Placeholder</doctitle>
                     <minmemory>128m</minmemory>
                     <maxmemory>512m</maxmemory>
                     <noindex>true</noindex>
                     <skip>${skipPlaceholderJavadocGeneration}</skip>
                     <javadocDirectory>${placeholderJavadocDir}</javadocDirectory>
                     <nohelp>true</nohelp>
                     <notimestamp>true</notimestamp>
                     <notree>true</notree>
                     <use>false</use>
                     <overview>${placeholderJavadocDir}/overview.html</overview>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
   <profiles>
      <profile>
         <id>release</id>
         <properties>
            <skipPlaceholderJavadocGeneration>true</skipPlaceholderJavadocGeneration>
         </properties>

         <dependencies>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-core-client</artifactId>
               <version>${project.version}</version>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-jms-client</artifactId>
               <version>${project.version}</version>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-server</artifactId>
               <version>${project.version}</version>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-jms-server</artifactId>
               <version>${project.version}</version>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-journal</artifactId>
               <version>${project.version}</version>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-selector</artifactId>
               <version>${project.version}</version>
            </dependency>

            <!-- stuff needed to resolve various classes during javadoc processing -->
            <dependency>
               <groupId>com.google.code.findbugs</groupId>
               <artifactId>jsr305</artifactId>
              <scope>provided</scope>
            </dependency>
            <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>artemis-log-annotation-processor</artifactId>
               <version>${project.version}</version>
               <scope>provided</scope>
            </dependency>
         </dependencies>

         <build>
            <plugins>
               <plugin>
                  <artifactId>maven-javadoc-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>javadoc-jar</id>
                        <phase>package</phase>
                        <goals>
                           <goal>jar</goal>
                        </goals>
                        <configuration>
                           <doctitle>ActiveMQ Artemis ${project.version} API</doctitle>
                           <source>8</source>
                           <minmemory>128m</minmemory>
                           <maxmemory>512m</maxmemory>
                           <noindex>true</noindex>
                           <skip>${skipWebsiteJavadocGeneration}</skip>
                           <!-- switch on dependency-driven aggregation -->
                           <includeDependencySources>true</includeDependencySources>

                           <dependencySourceIncludes>
                              <!-- include ONLY dependencies I control -->
                              <dependencySourceInclude>org.apache.activemq:artemis-core-client</dependencySourceInclude>
                              <dependencySourceInclude>org.apache.activemq:artemis-jms-client</dependencySourceInclude>
                              <dependencySourceInclude>org.apache.activemq:artemis-server</dependencySourceInclude>
                              <dependencySourceInclude>org.apache.activemq:artemis-jms-server</dependencySourceInclude>
                              <dependencySourceInclude>org.apache.activemq:artemis-journal</dependencySourceInclude>
                              <dependencySourceInclude>org.apache.activemq:artemis-selector</dependencySourceInclude>
                           </dependencySourceIncludes>
                           <aggregate>true</aggregate>
                           <excludePackageNames>org.apache.activemq.artemis.core:org.apache.activemq.artemis.utils
                           </excludePackageNames>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <groupId>com.github.eirslett</groupId>
                  <artifactId>frontend-maven-plugin</artifactId>
                  <version>${frontend-maven-plugin-version}</version>
                  <executions>
                     <execution>
                        <id>install node and npm</id>
                        <goals>
                           <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                           <nodeVersion>${nodeVersion}</nodeVersion>
                           <npmVersion>${npmVersion}</npmVersion>
                           <skip>${skipWebsiteDocGeneration}</skip>
                        </configuration>
                     </execution>
                     <execution>
                        <id>npm install</id>
                        <goals>
                           <goal>npm</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                           <arguments>install</arguments>
                           <skip>${skipWebsiteDocGeneration}</skip>
                        </configuration>
                     </execution>
                  </executions>
                  <configuration>
                    <skip>${skipWebsiteDocGeneration}</skip>
                  </configuration>
               </plugin>
               <plugin>
                  <groupId>org.apache.activemq</groupId>
                  <artifactId>artemis-maven-plugin</artifactId>
                  <version>${project.version}</version>
                  <executions>
                     <execution>
                        <id>doc-jms-client</id>
                        <phase>generate-sources</phase>
                        <goals>
                           <goal>dependency-doc</goal>
                        </goals>
                        <configuration>
                           <file>${scratch-dir-user-manual}/client-classpath-jms.md</file>
                           <groupOrder>
                              <arg>org.apache.activemq</arg>
                              <arg>jakarta.jms</arg>
                              <arg>org.jgroups</arg>
                              <arg>io.netty</arg>
                           </groupOrder>
                           <header>#Artemis JMS Client Dependencies
File | package | observation
---|---|---</header>
                           <line>X{fileMD} | X{package} | X{detail} </line>
                           <detailKey>
                              <arg>io.netty:netty-transport-native-epoll</arg>
                              <arg>io.netty:netty-transport-classes-epoll</arg>
                              <arg>io.netty:netty-transport-native-kqueue</arg>
                              <arg>io.netty:netty-transport-classes-kqueue</arg>
                              <arg>org.jgroups:jgroups</arg>
                           </detailKey>
                           <detailValue>
                              <arg>only if you want epoll on Linux</arg>
                              <arg>only if you want epoll on Linux</arg>
                              <arg>only if you want kqueue on MacOS</arg>
                              <arg>only if you want kqueue on MacOS</arg>
                              <arg>only if you want JGroups discovery from the clients</arg>
                           </detailValue>
                           <lib>org.apache.activemq:artemis-jms-client:${project.version}</lib>
                        </configuration>
                     </execution>
                     <execution>
                        <id>doc-jakarta-client</id>
                        <phase>generate-sources</phase>
                        <goals>
                           <goal>dependency-doc</goal>
                        </goals>
                        <configuration>
                           <file>${scratch-dir-user-manual}/client-classpath-jakarta.md</file>
                           <groupOrder>
                              <arg>org.apache.activemq</arg>
                              <arg>jakarta.jms</arg>
                              <arg>org.jgroups</arg>
                              <arg>io.netty</arg>
                           </groupOrder>
                           <header>#Artemis Jakarta Client Dependencies
File | package | observation
---|---|---</header>
                           <line>X{fileMD} | X{package} | X{detail} </line>
                           <detailKey>
                              <arg>io.netty:netty-transport-native-epoll</arg>
                              <arg>io.netty:netty-transport-classes-epoll</arg>
                              <arg>io.netty:netty-transport-native-kqueue</arg>
                              <arg>io.netty:netty-transport-classes-kqueue</arg>
                              <arg>org.jgroups:jgroups</arg>
                           </detailKey>
                           <detailValue>
                              <arg>only if you want epoll on Linux</arg>
                              <arg>only if you want epoll on Linux</arg>
                              <arg>only if you want kqueue on MacOS</arg>
                              <arg>only if you want kqueue on MacOS</arg>
                              <arg>only if you want JGroups discovery from the clients</arg>
                           </detailValue>
                           <lib>org.apache.activemq:artemis-jakarta-client:${project.version}</lib>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>

               <plugin>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <phase>generate-sources</phase>
                        <configuration>
                           <skip>${skipWebsiteDocGeneration}</skip>
                           <target>
                              <!-- Make scratch copy of user manual, filter the version config -->
                              <copy todir="${scratch-dir-user-manual}">
                                 <fileset dir="${src-dir-user-manual}" />
                              </copy>
                              <copy todir="${scratch-dir-user-manual}" overwrite="true">
                                 <fileset file="${src-dir-user-manual}/book.json" />
                                 <fileset file="${src-dir-user-manual}/client-classpath.md" />
                                 <fileset file="${src-dir-user-manual}/logging.md" />
                                 <filterset>
                                    <filter token="PROJECT_VERSION_FILTER_TOKEN" value="${project.version}" />
                                 </filterset>
                              </copy>

                              <condition property="honkit.cmd" value="${basedir}/node_modules/.bin/honkit.cmd" else="${basedir}/node_modules/.bin/honkit">
                                 <os family="windows" />
                              </condition>
                              <!-- lets generate the honkit -->
                              <mkdir dir="${webapp-outdir-user-manual}" />
                              <echo>executing ${honkit.cmd}</echo>
                              <exec executable="${honkit.cmd}" failonerror="true">
                                 <env key="PATH" path="${basedir}/node" />
                                 <arg value="build" />
                                 <arg value="${scratch-dir-user-manual}" />
                                 <arg value="${webapp-outdir-user-manual}" />
                              </exec>
                              <mkdir dir="${webapp-outdir-hacking-guide}" />
                              <echo>executing ${honkit.cmd}</echo>
                              <exec executable="${honkit.cmd}" failonerror="true">
                                 <env key="PATH" path="${basedir}/node" />
                                 <arg value="build" />
                                 <arg value="${basedir}/../docs/hacking-guide/en" />
                                 <arg value="${webapp-outdir-hacking-guide}" />
                              </exec>
                              <mkdir dir="${webapp-outdir-migration-guide}" />
                              <echo>executing ${honkit.cmd}</echo>
                              <exec executable="${honkit.cmd}" failonerror="true">
                                 <env key="PATH" path="${basedir}/node" />
                                 <arg value="build" />
                                 <arg value="${basedir}/../docs/migration-guide/en" />
                                 <arg value="${webapp-outdir-migration-guide}" />
                              </exec>
                           </target>
                        </configuration>
                        <goals>
                           <goal>run</goal>
                        </goals>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
