You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by do...@apache.org on 2019/07/13 11:09:23 UTC
[buildr] 04/05: Add support for downloading external annotations
and attaching them to IntelliJ IDEA module dependencies
This is an automated email from the ASF dual-hosted git repository.
donaldp pushed a commit to branch SupportExternalAnnotationArtifacts
in repository https://gitbox.apache.org/repos/asf/buildr.git
commit fbe7875ab5a40b1897c714f6a07117d4a07b753f
Author: Peter Donald <pe...@realityforge.org>
AuthorDate: Sat Jul 13 17:22:40 2019 +1000
Add support for downloading external annotations and attaching them to IntelliJ IDEA module dependencies
---
CHANGELOG | 1 +
lib/buildr/ide/idea.rb | 33 ++++++++++++++++++++++++---------
lib/buildr/packaging/artifact.rb | 20 ++++++++++++++++++--
3 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index c09b7ac..4323deb 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@
* Fixed: Replace references to long removed `http://www.ibiblio.org/maven2/` repository with
`https://repo1.maven.org/maven2`.
* Fixed: Ensure pom files used in tests use https when referring to maven repositories.
+* Added: Add support for downloading external annotations and attaching them to IntelliJ IDEA module dependencies.
1.5.7 (2019-02-16)
* Fixed: The fix that allowed special characters in usernames and passwords was only partially applied
diff --git a/lib/buildr/ide/idea.rb b/lib/buildr/ide/idea.rb
index dfd050d..3ead679 100644
--- a/lib/buildr/ide/idea.rb
+++ b/lib/buildr/ide/idea.rb
@@ -478,12 +478,18 @@ module Buildr #:nodoc:
dependency_path = d.to_s
export = true
source_path = nil
+ annotations_path = nil
if d.respond_to?(:to_spec_hash)
source_spec = d.to_spec_hash.merge(:classifier => 'sources')
source_path = Buildr.artifact(source_spec).to_s
source_path = nil unless File.exist?(source_path)
end
- [dependency_path, export, source_path]
+ if d.respond_to?(:to_spec_hash)
+ annotations_spec = d.to_spec_hash.merge(:classifier => 'annotations')
+ annotations_path = Buildr.artifact(annotations_spec).to_s
+ annotations_path = nil unless File.exist?(annotations_path)
+ end
+ [dependency_path, export, source_path, annotations_path]
end
end
@@ -494,12 +500,18 @@ module Buildr #:nodoc:
dependency_path = d.to_s
export = main_dependencies_paths.include?(dependency_path)
source_path = nil
+ annotations_path = nil
if d.respond_to?(:to_spec_hash)
source_spec = d.to_spec_hash.merge(:classifier => 'sources')
source_path = Buildr.artifact(source_spec).to_s
source_path = nil unless File.exist?(source_path)
end
- [dependency_path, export, source_path]
+ if d.respond_to?(:to_spec_hash)
+ annotations_spec = d.to_spec_hash.merge(:classifier => 'annotations')
+ annotations_path = Buildr.artifact(annotations_spec).to_s
+ annotations_path = nil unless File.exist?(annotations_path)
+ end
+ [dependency_path, export, source_path, annotations_path]
end
end
@@ -545,22 +557,22 @@ module Buildr #:nodoc:
end
main_project_dependencies = project_dependencies.dup
- self.test_dependency_details.each do |dependency_path, export, source_path|
+ self.test_dependency_details.each do |dependency_path, export, source_path, annotations_path|
next if export
- generate_lib(xml, dependency_path, export, source_path, project_dependencies)
+ generate_lib(xml, dependency_path, export, source_path, annotations_path, project_dependencies)
end
test_project_dependencies = project_dependencies - main_project_dependencies
- self.main_dependency_details.each do |dependency_path, export, source_path|
+ self.main_dependency_details.each do |dependency_path, export, source_path, annotations_path|
next unless export
- generate_lib(xml, dependency_path, export, source_path, test_project_dependencies)
+ generate_lib(xml, dependency_path, export, source_path, annotations_path, test_project_dependencies)
end
xml.orderEntryProperties
end
end
- def generate_lib(xml, dependency_path, export, source_path, project_dependencies)
+ def generate_lib(xml, dependency_path, export, source_path, annotations_path, project_dependencies)
project_for_dependency = Buildr.projects.detect do |project|
[project.packages, project.compile.target, project.resources.target, project.test.compile.target, project.test.resources.target].flatten.
detect { |artifact| artifact.to_s == dependency_path }
@@ -573,7 +585,7 @@ module Buildr #:nodoc:
end
project_dependencies << project_for_dependency
else
- generate_module_lib(xml, url_for_path(dependency_path), export, (source_path ? url_for_path(source_path) : nil), !export)
+ generate_module_lib(xml, url_for_path(dependency_path), export, (source_path ? url_for_path(source_path) : nil), (annotations_path ? url_for_path(annotations_path) : nil), !export)
end
end
@@ -649,12 +661,15 @@ module Buildr #:nodoc:
xml.orderEntry attribs
end
- def generate_module_lib(xml, path, export, source_path, test = false)
+ def generate_module_lib(xml, path, export, source_path, annotations_path, test = false)
attribs = {:type => 'module-library'}
attribs[:exported] = '' if export
attribs[:scope] = 'TEST' if test
xml.orderEntry attribs do
xml.library do
+ xml.ANNOTATIONS do
+ xml.root :url => annotations_path
+ end if annotations_path
xml.CLASSES do
xml.root :url => path
end
diff --git a/lib/buildr/packaging/artifact.rb b/lib/buildr/packaging/artifact.rb
index 2af68c7..27f87be 100644
--- a/lib/buildr/packaging/artifact.rb
+++ b/lib/buildr/packaging/artifact.rb
@@ -21,6 +21,9 @@ module Buildr #:nodoc:
desc "Download all artifacts' sources"
task 'artifacts:sources'
+ desc "Download all artifacts' external annotations"
+ task 'artifacts:annotations'
+
desc "Download all artifacts' javadoc"
task 'artifacts:javadoc'
@@ -127,7 +130,7 @@ module Buildr #:nodoc:
def sources_artifact
sources_spec = to_spec_hash.merge(:classifier=>'sources')
sources_task = OptionalArtifact.define_task(Buildr.repositories.locate(sources_spec))
- sources_task.send :apply_spec, sources_spec
+ sources_task.send :apply_spec, sources_spec if sources_task.respond_to?(:apply_spec)
sources_task
end
@@ -138,11 +141,23 @@ module Buildr #:nodoc:
def javadoc_artifact
javadoc_spec = to_spec_hash.merge(:classifier=>'javadoc')
javadoc_task = OptionalArtifact.define_task(Buildr.repositories.locate(javadoc_spec))
- javadoc_task.send :apply_spec, javadoc_spec
+ javadoc_task.send :apply_spec, javadoc_spec if javadoc_task.respond_to?(:apply_spec)
javadoc_task
end
# :call-seq:
+ # annotations_artifact => Artifact
+ #
+ # Convenience method that returns an annotations artifact. The annotations artifact is used by
+ # Intellij IDEA as a source of external annotations.
+ def annotations_artifact
+ annotations_spec = to_spec_hash.merge(:classifier=>'annotations')
+ annotations_task = OptionalArtifact.define_task(Buildr.repositories.locate(annotations_spec))
+ annotations_task.send :apply_spec, annotations_spec if annotations_task.respond_to?(:apply_spec)
+ annotations_task
+ end
+
+ # :call-seq:
# pom_xml => string
#
# Creates POM XML for this artifact.
@@ -948,6 +963,7 @@ module Buildr #:nodoc:
unless spec[:type] == :pom
Rake::Task['artifacts:sources'].enhance [task.sources_artifact]
Rake::Task['artifacts:javadoc'].enhance [task.javadoc_artifact]
+ Rake::Task['artifacts:annotations'].enhance [task.annotations_artifact]
end
end
task.enhance &block