This is an automated email from the ASF dual-hosted git repository.
hossman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 0626de4 SOLR-15265: Use (unpacked) lucene javadoc jars from maven for
local link checking in ref-guide
0626de4 is described below
commit 0626de4d6a25f72760c15f6323ebfdd1108c3160
Author: Chris Hostetter <[email protected]>
AuthorDate: Fri Mar 19 10:11:30 2021 -0700
SOLR-15265: Use (unpacked) lucene javadoc jars from maven for local link
checking in ref-guide
Closes #26
Co-authored-by: Dawid Weiss <[email protected]>
---
build.gradle | 1 +
gradle/documentation/pull-lucene-javadocs.gradle | 86 ++++++++++++++++++++++++
solr/solr-ref-guide/build.gradle | 10 ++-
3 files changed, 94 insertions(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index 1756ffd..a3be7c0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -169,6 +169,7 @@ apply from: file('gradle/ant-compat/misc.gradle')
apply from: file('gradle/ant-compat/force-versions.gradle')
apply from: file('gradle/ant-compat/artifact-naming.gradle')
+apply from: file('gradle/documentation/pull-lucene-javadocs.gradle')
apply from: file('gradle/documentation/documentation.gradle')
apply from: file('gradle/documentation/changes-to-html.gradle')
apply from: file('gradle/documentation/markdown.gradle')
diff --git a/gradle/documentation/pull-lucene-javadocs.gradle
b/gradle/documentation/pull-lucene-javadocs.gradle
new file mode 100644
index 0000000..73700f0
--- /dev/null
+++ b/gradle/documentation/pull-lucene-javadocs.gradle
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ */
+
+
+// Pull and unpack Lucene javadocs from published Maven artifacts for use in
local link checking.
+
+configure(project(":solr:documentation")) {
+ ext {
+ luceneDocsDir = file("${project.buildDir}/lucene-javadocs")
+ }
+
+ configurations {
+ javadocs {
+ // Not sure why we need this, otherwise regular JARs get sucked in, not
just
+ // javadoc-classifier JARs
+ transitive = false
+ }
+ }
+
+ dependencies {
+ // Note we can't use the abbreviated form (above) because we omit the
version number
+ // for the palantir plugin and at the same time we wish to use the
classifier.
+
+ // TODO:
+ // - For now this list is focused solely on the javadocs needed for
ref-guide link validation.
+ // - If/when additional links are added from the ref-guide to additional
lucene modules not listed here,
+ // they can be added.
+ // - If/when we need the lucene javadocs for "all" lucene depdencies in
Solr (ie: to do link checking
+ // from all Solr javadocs?) then perhaps we can find a way to build this
list programatically?
+ // - If these javadocs are (only every) consumed by the ref guide only,
then these deps & associated tasks
+ // should just be moved to the ref-guide build.gradle
+ javadocs group: 'org.apache.lucene', name: 'lucene-core', classifier:
'javadoc'
+ javadocs group: 'org.apache.lucene', name: 'lucene-analysis-common',
classifier: 'javadoc'
+ javadocs group: 'org.apache.lucene', name: 'lucene-analysis-stempel',
classifier: 'javadoc'
+ javadocs group: 'org.apache.lucene', name: 'lucene-queryparser',
classifier: 'javadoc'
+ javadocs group: 'org.apache.lucene', name: 'lucene-sandbox', classifier:
'javadoc'
+ javadocs group: 'org.apache.lucene', name: 'lucene-spatial-extras',
classifier: 'javadoc'
+ }
+
+
+ task collectLuceneJavadocs() {
+ description "Collect and unpack javadoc artifacts from 'javadocs'
configuration"
+
+ dependsOn configurations.javadocs
+ inputs.files configurations.javadocs
+ outputs.dir luceneDocsDir
+
+ doFirst {
+ def resolved = configurations.javadocs.resolvedConfiguration
+ resolved.resolvedArtifacts.each { artifact ->
+ def id = artifact.moduleVersion.id
+ // This mimics the directory stucture used on lucene.apache.org for
the javadocs of all modules.
+ //
+ // HACK: the lucene.apache.org javadocs are organized to match the
module directory structure in the repo,
+ // not the "flat" artifact names -- so there is no one size fits all
way to determine the directory name.
+ // We have to "special case" that analysis-* modules are in an
'analysis/*' subdir, while the general rule is that
+ // '-' in artifact names are left as part of the dir name (ie:
'spatial-extras/')....
+ def path = id.name.replaceFirst('^lucene-',
'').replaceFirst('^analysis-','analysis/')
+ project.sync {
+ from zipTree(artifact.file)
+ into file("${luceneDocsDir}/${path}/")
+ }
+ }
+ }
+ }
+
+ artifacts {
+ javadocs luceneDocsDir, {
+ builtBy collectLuceneJavadocs
+ }
+ }
+}
diff --git a/solr/solr-ref-guide/build.gradle b/solr/solr-ref-guide/build.gradle
index 7d56f89..06b2628 100644
--- a/solr/solr-ref-guide/build.gradle
+++ b/solr/solr-ref-guide/build.gradle
@@ -133,9 +133,13 @@ ext {
// NOTE: extra '../' because we'll in a sub-dir of buildDir that will
be built later...
props: [
htmlSolrJavadocs : 'link:../' +
buildDir.toPath().relativize(project(':solr:documentation').docroot.toPath()).toString().replace(File.separator,
'/'),
- // TODO: This isn't viable long term - see SOLR-15262 / SOLR-15264
- htmlLuceneJavadocs :
"https://lucene.apache.org/core/${solrGuideVersionPath}_0/"
- ]
+ htmlLuceneJavadocs : 'link:../' +
buildDir.toPath().relativize(project(':solr:documentation').luceneDocsDir.toPath()).toString().replace(File.separator,
'/'),
+ ]
+
+ // TODO: (see full discussion in SOLR-15265)
+ // Ref guide build should really depend on those javadocs it links to
- then there would be no awkwardness and, ideally,
+ // you could just sync the resources you need into the final
structure (that's why I declared javadocs as an artifact).
+ // This does entail some duplication (syncing between folders) but if
it's reused in different places then it's fine.
]
}