This is an automated email from the ASF dual-hosted git repository. twolf pushed a commit to branch dev_3.0 in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit 3201d2ccafb5e303bba80f6474eaf5aaca87020f Author: Thomas Wolf <tw...@apache.org> AuthorDate: Fri Apr 18 22:51:25 2025 +0200 Add API comparison reports Create japicmp reports, collect them in a web site, and publish that web site via gh-pages. Because the maven-site-plugin generated rather useless stuff for the top-level multi-module project (maybe I just don't know how to use it), I decided to create that web site in a small sshd-site module, copying over the japicmp reports explicitly and then generating a site for this simple maven project. Using groovy, we automatically adapt the site menu, and we also enhance the HTML output a little: japicmp's markdown output makes use of the GitHub markdown "alert" extension, which Doxia (the markdown-to-html converter the maven-site-plugin uses) doesn't know. But it's fairly easy to post-process the HTML output to render these alerts properly. The web site is published using maven-scm-publish-plugin to gh-pages. It is accessible at https://apache.github.io/mina-sshd . --- .asf.yaml | 2 + .github/workflows/next-build.yml | 11 ++ pom.xml | 60 ++++++++- sshd-benchmarks/pom.xml | 8 ++ sshd-site/pom.xml | 191 ++++++++++++++++++++++++++++ sshd-site/src/main/groovy/alerts.groovy | 55 ++++++++ sshd-site/src/main/groovy/patch.groovy | 41 ++++++ sshd-site/src/site/markdown/index.md | 36 ++++++ sshd-site/src/site/resources/css/custom.css | 91 +++++++++++++ sshd-site/src/site/site.xml | 43 +++++++ 10 files changed, 535 insertions(+), 3 deletions(-) diff --git a/.asf.yaml b/.asf.yaml index 2fb34730c..2fe3feaf6 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -11,6 +11,8 @@ github: issues: true dependabot_alerts: true dependabot_updates: true + ghp_branch: gh-pages + ghp_path: / notifications: commits: commits@mina.apache.org diff --git a/.github/workflows/next-build.yml b/.github/workflows/next-build.yml index 4d283627b..e04bf3d94 100644 --- a/.github/workflows/next-build.yml +++ b/.github/workflows/next-build.yml @@ -77,6 +77,9 @@ jobs: echo "**** Skipping deployment because not a snapshot version: $PROJECT_VERSION" 1>&2 echo "SKIP_DEPLOYMENT=true" >> "$GITHUB_ENV" } + if [[ "$PROJECT_VERSION" =~ ^3\.[0-9]+\.[0-9]+-M[1-9]$ ]]; then + echo "DEPLOY_WEBSITE=true" >> "$GITHUB_ENV" + fi - name: Check HEAD is current # Must be quoted, ! is special in yaml @@ -104,3 +107,11 @@ jobs: # accidental release deployments as an additional safety measure. The snapshot # repo from the Apache parent POM is not overridden. run: mvn -B --errors --activate-profiles ci --no-transfer-progress deploy -DskipTests -DdeployAtEnd + + - name: Build and deploy web site + if: env.DEPLOY_WEBSITE + run: | + git config --global user.name '${{ github.actor }}' + git config --global user.email '41898282+${{ github.actor }}@users.noreply.github.com' + mvn -B --no-transfer-progress -DskipTests -Pjapicmp clean install + mvn scm-publish:publish-scm -rf :sshd-site diff --git a/pom.xml b/pom.xml index 3593e54e5..eaeb7399a 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,7 @@ </scm> <properties> + <japicmp-sshd-last-release>2.15.0</japicmp-sshd-last-release> <minimalJavaBuildVersion>17</minimalJavaBuildVersion> <surefireJdk>[${minimalJavaBuildVersion},)</surefireJdk> <minimalMavenBuildVersion>3.9.8</minimalMavenBuildVersion> @@ -119,7 +120,7 @@ <plexus.archiver.version>4.10.0</plexus.archiver.version> <!-- See https://pmd.github.io/ for available latest version --> <pmd.version>7.12.0</pmd.version> - + <japicmp.version>0.23.1</japicmp.version> <sshd.tests.timeout.factor>1.0</sshd.tests.timeout.factor> <sshd.tests.rerun.count>2</sshd.tests.rerun.count> @@ -406,6 +407,56 @@ </pluginManagement> </build> </profile> + + <profile> + <id>japicmp</id> + <build> + <plugins> + <plugin> + <groupId>com.github.siom79.japicmp</groupId> + <artifactId>japicmp-maven-plugin</artifactId> + <version>${japicmp.version}</version> + <configuration> + <oldVersion> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${japicmp-sshd-last-release}</version> + </dependency> + </oldVersion> + <newVersion> + <file> + <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path> + </file> + </newVersion> + <parameter> + <onlyModified>true</onlyModified> + <accessModifier>protected</accessModifier> + <breakBuildOnModifications>false</breakBuildOnModifications> + <breakBuildOnBinaryIncompatibleModifications>false</breakBuildOnBinaryIncompatibleModifications> + <onlyBinaryIncompatible>false</onlyBinaryIncompatible> + <includeSynthetic>false</includeSynthetic> + <ignoreMissingClasses>true</ignoreMissingClasses> + <skipHtmlReport>true</skipHtmlReport> + <skipXmlReport>true</skipXmlReport> + <skipDiffReport>true</skipDiffReport> + <reportLinkName>japicmp-${project.artifactId}</reportLinkName> + <markdownTitle>Compatibility Report for ${project.artifactId}</markdownTitle> + </parameter> + </configuration> + <executions> + <execution> + <id>japicmp-${project.artifactId}</id> + <phase>verify</phase> + <goals> + <goal>cmp</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> </profiles> <dependencyManagement> @@ -1334,6 +1385,7 @@ </plugin> </plugins> </build> + <distributionManagement> <repository> <id>dummy</id> @@ -1344,10 +1396,11 @@ <reporting> <plugins> - <plugin> <!-- used by PMD to create a source XREF --> + <plugin> + <!-- used by PMD to create a source XREF --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> - <version>3.4.0</version> + <version>3.6.0</version> </plugin> </plugins> </reporting> @@ -1369,5 +1422,6 @@ <module>sshd-cli</module> <module>sshd-osgi</module> <module>assembly</module> + <module>sshd-site</module> </modules> </project> diff --git a/sshd-benchmarks/pom.xml b/sshd-benchmarks/pom.xml index 4d8bb199d..cecfcebb2 100644 --- a/sshd-benchmarks/pom.xml +++ b/sshd-benchmarks/pom.xml @@ -156,6 +156,14 @@ </execution> </executions> </plugin> + <plugin> + <groupId>com.github.siom79.japicmp</groupId> + <artifactId>japicmp-maven-plugin</artifactId> + <version>${japicmp.version}</version> + <configuration> + <skip>true</skip> + </configuration> + </plugin> <!-- Don't install or deploy this. --> <plugin> <groupId>org.apache.maven.plugins</groupId> diff --git a/sshd-site/pom.xml b/sshd-site/pom.xml new file mode 100644 index 000000000..2ab2bfeed --- /dev/null +++ b/sshd-site/pom.xml @@ -0,0 +1,191 @@ +<!-- + 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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.sshd</groupId> + <artifactId>sshd</artifactId> + <version>3.0.0-SNAPSHOT</version> + <relativePath>..</relativePath> + </parent> + + <artifactId>sshd-site</artifactId> + <name>Apache Mina SSHD :: Site</name> + <description>Build a small development website containing the japicmp reports.</description> + <packaging>pom</packaging> + <inceptionYear>2025</inceptionYear> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-scm-publish-plugin</artifactId> + <configuration> + <scmBranch>gh-pages</scmBranch> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <!-- Don't install or deploy this. --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>japicmp</id> + <build> + <plugins> + <!-- First copy the site into ./target, then add the japicmp reports. --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>copy-japicmp</id> + <phase>generate-resources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <target> + <mkdir dir="${project.build.directory}/src/site" /> + <copy todir="${project.build.directory}/src/site"> + <fileset dir="${project.basedir}/src/site" includes="**" /> + </copy> + <copy todir="${project.build.directory}/src/site/markdown" overwrite="true"> + <fileset dir=".." includes="**/japicmp-*.md" /> + <mapper type="flatten" /> + </copy> + </target> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.gmaven</groupId> + <artifactId>groovy-maven-plugin</artifactId> + <version>2.1.1</version> + <executions> + <!-- Then modify the site.xml to include menu links to the reports. --> + <execution> + <id>include-reports</id> + <phase>generate-resources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source>${project.basedir}/src/main/groovy/patch.groovy</source> + </configuration> + </execution> + <!-- After the site is created, patch the HTML to handle GitHub markdown alerts. --> + <execution> + <id>alerts</id> + <phase>package</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source>${project.basedir}/src/main/groovy/alerts.groovy</source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <executions> + <!-- Assemble the site --> + <execution> + <id>create-site</id> + <phase>prepare-package</phase> + <goals> + <goal>site</goal> + </goals> + <configuration> + <siteDirectory>${project.build.directory}/src/site</siteDirectory> + </configuration> + </execution> + <!-- And finally stage it --> + <execution> + <id>stage-site</id> + <phase>verify</phase> + <goals> + <goal>stage</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>3.9.0</version> + <reportSets> + <reportSet> + <reports /> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <reportSets> + <reportSet> + <configuration> + <skip>true</skip> + </configuration> + </reportSet> + </reportSets> + </plugin> + </plugins> + </reporting> + + <distributionManagement> + <site> + <id>devwebsite</id> + <url>scm:git:ssh://g...@github.com/apache/mina-sshd.git</url> + </site> + </distributionManagement> + +</project> diff --git a/sshd-site/src/main/groovy/alerts.groovy b/sshd-site/src/main/groovy/alerts.groovy new file mode 100644 index 000000000..7aaf72cfd --- /dev/null +++ b/sshd-site/src/main/groovy/alerts.groovy @@ -0,0 +1,55 @@ +/* + * 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. + */ + +log.info("Patching HTML for markdown alerts") + +def caution_class = "alert-caution" +def caution_img = "<svg class='${caution_class}' viewBox='0 0 16 16' version='1.1' width='16' height='16'><path d='M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 [...] + +def important_class = "alert-important" +def important_img = "<svg class='${important_class}' viewBox='0 0 16 16' version='1.1' width='16' height='16'><path d='M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 [...] + +def note_class = "alert-note" +def note_img = "<svg class='${note_class}' viewBox='0 0 16 16' version='1.1' width='16' height='16'><path d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z' /></svg>" + +def tip_class = "alert-tip" +def tip_img = "<svg class='${tip_class}' viewBox='0 0 16 16' version='1.1' width='16' height='16'><path d='M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.5 [...] + +def warning_class = "alert-warning" +def warning_img = "<svg class='${warning_class}' viewBox='0 0 16 16' version='1.1' width='16' height='16'><path d='M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' /></svg>" + +def replace(text, mark, css, img, label) { + return text.replaceAll("<blockquote>(\\R|\\S)*<p>\\Q${mark}\\E", "<blockquote class='${css}'><p class='${css}'>${img}${label}") +} + +def reports = new File("${project.build.directory}/site").listFiles() + +reports.each() { file -> + def name = file.name + if (name.startsWith("japicmp-")) { + log.info("Patching ${name}") + def content = file.text + content = replace(content, "[!CAUTION]", caution_class, caution_img, "Caution") + content = replace(content, "[!IMPORTANT]", important_class, important_img, "Important") + content = replace(content, "[!NOTE]", note_class, note_img, "Note") + content = replace(content, "[!TIP]", tip_class, tip_img, "Tip") + content = replace(content, "[!WARNING]", warning_class, warning_img, "Warning") + file.text = content + } +} diff --git a/sshd-site/src/main/groovy/patch.groovy b/sshd-site/src/main/groovy/patch.groovy new file mode 100644 index 000000000..380b136ae --- /dev/null +++ b/sshd-site/src/main/groovy/patch.groovy @@ -0,0 +1,41 @@ +/* + * 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. + */ + +log.info("Including japicmp reports in the site") + +def reports = new File("${project.build.directory}/src/site/markdown").listFiles() +def names = [] + +reports.each() { file -> + names.add(file.name) +} + +def site = new File("${project.build.directory}/src/site/site.xml") +def siteContent = site.text + +names.sort().each() { name -> + if (name.startsWith("japicmp-")) { + log.info("Adding ${name}") + def page = name.substring(0, name.size() - 3) + def module = page.substring(8) + siteContent = siteContent.replaceFirst("<!-- JAPICMP -->", "<item href=\"${page}.html\" name=\"${module}\" />\n<!-- JAPICMP -->") + } +} + +site.text = siteContent diff --git a/sshd-site/src/site/markdown/index.md b/sshd-site/src/site/markdown/index.md new file mode 100644 index 000000000..c5fda3817 --- /dev/null +++ b/sshd-site/src/site/markdown/index.md @@ -0,0 +1,36 @@ +<!-- +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. +--> +# Apache MINA sshd + +Welcome to the _development_ web site of Apache MINA sshd. This web site currently +contains technical information about the development of a new major release **3.0.0**. + +Apache MINA sshd is a pure Java library for client- and server-side SSH. + +* The main web site is at [Apache MINA sshd](https://mina.apache.org/sshd-project). +* For now, [technical documentation](https://github.com/apache/mina-sshd/blob/master/README.md) +still lives directly in the git repository and can be viewed as rendered web pages in GitHub. +* Technical information on the development of release 3.0.0 is available in branch `dev_3.0`: + * [Changes since 2.15.0](https://github.com/apache/mina-sshd/blob/dev_3.0/CHANGES.md) + * [Technical documentation](https://github.com/apache/mina-sshd/tree/dev_3.0/docs/technical) + +Release 3.0.0 will be a new major release and will contain many breaking API changes. +It will not be API-compatible with the 2.X releases. There are +[`japicmp`](https://siom79.github.io/japicmp) reports about the API changes available +here; see the menu on the left. (Most of the API changes affect only the `protected` API, +i.e., the API for subclassing. But there are also changes in the `public` API that may +affect user code. diff --git a/sshd-site/src/site/resources/css/custom.css b/sshd-site/src/site/resources/css/custom.css new file mode 100644 index 000000000..05219b879 --- /dev/null +++ b/sshd-site/src/site/resources/css/custom.css @@ -0,0 +1,91 @@ +/* + * 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. + */ + +/* Headings with code formatting should not be red. */ + +h1 > code, h2 > code, h3 > code, h4 > code, h5 > code { + color: inherit; +} + +/* Markdown alerts */ + +blockquote.alert-caution { + border-left: .25em solid #FF0000; +} + +p.alert-caution { + color: #FF0000; +} + +svg.alert-caution { + fill: #FF0000; + padding-right: .25em; +} + +blockquote.alert-important { + border-left: .25em solid #8250DF; +} + +p.alert-important { + color: #8250DF; +} + +svg.alert-important { + fill: #8250DF; + padding-right: .25em; +} + +blockquote.alert-note { + border-left: .25em solid #0969DA; +} + +p.alert-note { + color: #0969DA; +} + +svg.alert-note { + fill: #0969DA; + padding-right: .25em; +} + +blockquote.alert-tip { + border-left: .25em solid #1A7F37; +} + +p.alert-tip { + color: #1A7F37; +} + +svg.alert-tip { + fill: #1A7F37; + padding-right: .25em; +} + +blockquote.alert-warning { + border-left: .25em solid #FF7F50; +} + +p.alert-warning { + color: #FF7F50; +} + +svg.alert-warning { + fill: #FF7F50; + padding-right: .25em; +} diff --git a/sshd-site/src/site/site.xml b/sshd-site/src/site/site.xml new file mode 100644 index 000000000..f9a059bc9 --- /dev/null +++ b/sshd-site/src/site/site.xml @@ -0,0 +1,43 @@ +<?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. +--> +<site xmlns="http://maven.apache.org/SITE/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SITE/2.0.0 https://maven.apache.org/xsd/site-2.0.0.xsd"> + <publishDate format="yyyy-MM-dd" position="right" /> + <version position="right" /> + + <skin> + <groupId>org.apache.maven.skins</groupId> + <artifactId>maven-fluido-skin</artifactId> + <version>2.1.0</version> + </skin> + + <body> + <head> + <![CDATA[<link rel="stylesheet" href="./css/custom.css" />]]> + </head> + + <breadcrumbs> + <item name="Apache MINA sshd" href="https://apache.github.io/mina-sshd"/> + </breadcrumbs> + <menu name="Overview"> + <item href="index.html" name="Introduction"/> + </menu> + <menu name="API comparisons"> + <!-- JAPICMP --> + </menu> + </body> +</site> \ No newline at end of file