diff --git a/tycho-its/projects/api-tools/embedded-jars/.mvn/extensions.xml b/tycho-its/projects/api-tools/embedded-jars/.mvn/extensions.xml
new file mode 100644
index 0000000000..79a6c51e8d
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/.mvn/extensions.xml
@@ -0,0 +1,7 @@
+
+
+ org.eclipse.tycho
+ tycho-build
+ ${tycho-version}
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/.mvn/maven.config b/tycho-its/projects/api-tools/embedded-jars/.mvn/maven.config
new file mode 100644
index 0000000000..babb6c469f
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/.mvn/maven.config
@@ -0,0 +1 @@
+-Dtycho-version=5.0.0-SNAPSHOT
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.classpath b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.classpath
new file mode 100644
index 0000000000..3bf050a3e7
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.gitignore b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.gitignore
new file mode 100644
index 0000000000..dab215db28
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.gitignore
@@ -0,0 +1,12 @@
+bin
+lib
+bin_ant
+temp*
+!/templates/
+build.xml
+!/scripts/build.xml
+pdebuild.jar
+org.eclipse.pde.build_*.zip
+pdebuildsrc.zip
+javaCompiler.pdebuild.jar.args
+javaCompiler.lib_pdebuild-ant.jar.args
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.project b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.project
new file mode 100644
index 0000000000..25264293c3
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.project
@@ -0,0 +1,44 @@
+
+
+ org.eclipse.pde.build
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.ui.externaltools.ExternalToolBuilder
+ auto,full,incremental,
+
+
+ LaunchConfigHandle
+ <project>/.externalToolBuilders/org.eclipse.pde.build localbuild.xml [Builder].launch
+
+
+
+
+ org.eclipse.pde.api.tools.apiAnalysisBuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+ org.eclipse.pde.api.tools.apiAnalysisNature
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/.api_filters b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/.api_filters
new file mode 100644
index 0000000000..5d02df3c89
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/.api_filters
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.core.prefs b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..c97ac95ca6
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,462 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.ui.prefs b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..20063627cf
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,55 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_core
+formatter_settings_version=13
+org.eclipse.jdt.ui.text.custom_code_templates=
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/MANIFEST.MF b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..c49a21e120
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.pde.build;singleton:=true
+Bundle-Version: 3.12.200.qualifier
+Bundle-ClassPath: pdebuild.jar
+Bundle-Activator: org.eclipse.pde.internal.build.BuildActivator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.pde.build,
+ org.eclipse.pde.internal.build;x-friends:="org.eclipse.pde.core,org.eclipse.pde.ui,org.eclipse.pde.launching",
+ org.eclipse.pde.internal.build.ant;x-internal:=true,
+ org.eclipse.pde.internal.build.builder;x-internal:=true,
+ org.eclipse.pde.internal.build.fetch;x-internal:=true,
+ org.eclipse.pde.internal.build.packager;x-friends:="org.eclipse.pde.core",
+ org.eclipse.pde.internal.build.properties;x-internal:=true,
+ org.eclipse.pde.internal.build.publisher.compatibility;x-internal:=true,
+ org.eclipse.pde.internal.build.site;x-friends:="org.eclipse.pde.core,org.eclipse.pde.ui",
+ org.eclipse.pde.internal.build.site.compatibility;x-internal:=true,
+ org.eclipse.pde.internal.build.tasks;x-internal:=true
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Eclipse-BundleShape: dir
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Automatic-Module-Name: org.eclipse.pde.build
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/eclipse.inf b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/eclipse.inf
new file mode 100644
index 0000000000..43380da055
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/META-INF/eclipse.inf
@@ -0,0 +1,2 @@
+jarprocessor.exclude.children=true
+jarprocessor.exclude.pack=true
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/build.properties b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/build.properties
new file mode 100644
index 0000000000..ee05f53c45
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/build.properties
@@ -0,0 +1,29 @@
+###############################################################################
+# Copyright (c) 2003, 2009 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+extra.lib/pdebuild-ant.jar = ../org.apache.ant/ant.jar
+bin.includes = plugin.xml,\
+ plugin.properties,\
+ *.jar,\
+ lib/*.jar,\
+ META-INF/
+jars.compile.order = pdebuild.jar,\
+ lib/pdebuild-ant.jar
+source.pdebuild.jar = src/
+output.pdebuild.jar = bin/
+src.includes = about.html,\
+ schema/
+source.lib/pdebuild-ant.jar = src_ant/
+output.lib/pdebuild-ant.jar = bin_ant/
+jars.extra.classpath = platform:/plugin/org.apache.ant/lib/ant.jar,\
+ platform:/plugin/org.eclipse.equinox.p2.repository.tools/lib/repository-tools-ant.jar
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.properties b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.properties
new file mode 100644
index 0000000000..9e14eae7df
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2003, 2006 IBM Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = Plug-in Development Environment Build Support
+providerName = Eclipse.org
+
+fetchFactories.name = Fetch Script Factories
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.xml b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.xml
new file mode 100644
index 0000000000..48335b34c8
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/plugin.xml
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/schema/fetchFactories.exsd b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/schema/fetchFactories.exsd
new file mode 100644
index 0000000000..bd5f4786f0
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/schema/fetchFactories.exsd
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+ This extension point provides factories for constructing repository specific fetch script during the PDE Build fetch process (eclipse.fetch Ant task).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines a fetch factory being used in the eclipse.fetch Ant task.
+
+
+
+
+
+
+ The id identifying the repository. This value is used in the map files.
+
+
+
+
+
+
+ The factory implementation. It must implement <code>org.eclipse.pde.build.IFetchFactory</code>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.2
+
+
+
+
+
+
+
+
+ <pre>
+<extension point="org.eclipse.pde.build.fetchFactories">
+ <factory
+ class="org.eclipse.pde.internal.build.fetch.CVSFetchTaskFactory"
+ id="CVS"/>
+ <factory
+ class="org.eclipse.pde.internal.build.fetch.COPYFetchTasksFactory"
+ id="COPY"/>
+</extension>
+</pre>
+
+
+
+
+
+
+
+
+ See the <code>org.eclipse.pde.build.IFetchFactory</code> interface.
+
+
+
+
+
+
+
+
+ The following fetch task factories are provided by PDE Build.
+<ul>
+<li>a CVS fetch task factory for fetching features and plug-ins from CVS repositories.</li>
+<li>a COPY fetch task factory for copying features and plug-ins from arbitrary file system locations.</li>
+</ul>
+
+
+
+
+
+
+
+
+ Copyright (c) 2004, 2006 Eclipse Foundation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ Contributors:
+ Gunnar Wagenknecht - Initial API and implementation
+ IBM Corporation - Initial API and implementation
+
+
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/Constants.java b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/Constants.java
new file mode 100644
index 0000000000..a0cf62a2a5
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/Constants.java
@@ -0,0 +1,43 @@
+/**********************************************************************
+ * Copyright (c) 2006, 2010 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gunnar Wagenknecht - Initial API and implementation
+ * IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.pde.build;
+
+/**
+ * Constants for the files usually manipulated by the fetch factory.
+ * @since 3.2
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface Constants {
+ /** Constant for the string feature.xml
*/
+ public final static String FEATURE_FILENAME_DESCRIPTOR = "feature.xml"; //$NON-NLS-1$
+
+ /** Constant for the string fragment.xml
*/
+ public final static String FRAGMENT_FILENAME_DESCRIPTOR = "fragment.xml"; //$NON-NLS-1$
+
+ /** Constant for the string plugin.xml
*/
+ public final static String PLUGIN_FILENAME_DESCRIPTOR = "plugin.xml"; //$NON-NLS-1$
+
+ /** Constant for the string META-INF/MANIFEST.MF
*/
+ public final static String BUNDLE_FILENAME_DESCRIPTOR = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
+
+ /**
+ * Key used to store the value of a project reference in the Eclipse-SourceReferences manifest header.
+ *
+ * @since 3.6
+ * @see IFetchFactory
+ */
+ public static final String KEY_SOURCE_REFERENCES = "sourceReferences"; //$NON-NLS-1$
+
+}
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java
new file mode 100644
index 0000000000..9f92f5a12c
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IAntScript.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2019 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.build;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Interface providing helper methods to produce Ant scripts.
+ *
+ * It contains convenience methods for creating the XML elements
+ * required for Ant scripts. See the Ant
+ * website for more details on Ant scripts and the particular Ant tasks.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IAntScript {
+
+ /**
+ * Print the given string to the Ant script.
+ *
+ * @param string the string to print.
+ */
+ public void print(String string);
+
+ /**
+ * Print the given comment to the Ant script folled by a carriage-return.
+ *
+ * @param comment the comment to print.
+ */
+ public void printComment(String comment);
+
+ /**
+ * Print the given string followed by a carriage-return.
+ *
+ * @param string the string to print.
+ */
+ public void println(String string);
+
+ /**
+ * Print a empty line.
+ */
+ public void println();
+
+ /**
+ * Print an ant call task as defined by AntCall}.
+ * @param target the target executed by the call. This value can not be null
.
+ * @param inheritAll If true, pass all properties to the new Ant project.
+ * @param params Specifies as key / value pairs, the properties to set before running the specified target. This value can be null
+ */
+ public void printAntCallTask(String target, boolean inheritAll, Map params);
+
+ /**
+ * Print an XML attribute. name=value
.
+ * @param name the name of the attribute to print. This value can not be null
.
+ * @param value the name of the value to print. This value can be null
.
+ * @param mandatory indicate whether or not the value is mandatory.
+ * If the value
is null
and the attribute is mandatory, the printed value will be "".
+ */
+ public void printAttribute(String name, String value, boolean mandatory);
+
+ /**
+ * Print tagName as an xml begin tag (<tagName>
).
+ * @param tagName the tag to print.
+ */
+ public void printStartTag(String tagName);
+
+ /**
+ * Print tagName as an xml begin tag with attributes (<tagName [attributes...] >
).
+ * @param tag the tag to print.
+ * @param attributes attributes for the tag.
+ * @since 3.6
+ */
+ public void printStartTag(String tag, Map attributes);
+
+ /**
+ * Print tagName as an xml end tag (</tagName>
).
+ * @param endTag the tag to print.
+ */
+ public void printEndTag(String endTag);
+
+ /**
+ * Print an xml element with attributes (<tagName [attributes...] />
).
+ * @param tag the tag to print
+ * @param attributes the attributes for the tag
+ * @since 3.6
+ */
+ public void printElement(String tag, Map attributes);
+
+ /**
+ * Print as many tabs as current nesting level requires
+ */
+ public void printTabs();
+
+ /**
+ * Increment the nesting level
+ * @since 3.6
+ */
+ public void incrementIdent();
+
+ /**
+ * Decrement the nesting level
+ * @since 3.6
+ */
+ public void decrementIdent();
+
+ /**
+ * Print a target declaration. See Ant's targets.
+ * @param name the name of the target. This value can not be null
.
+ * @param depends a comma-separated list of names of targets on which this target depends. This value can be null
.
+ * @param ifClause the name of the property that must be set in order for this target to execute. This value can be null
+ * @param unlessClause the name of the property that must not be set in order for this target to execute. This value can be null
+ * @param description a short description of this target's function. This value can be null
+ */
+ public void printTargetDeclaration(String name, String depends, String ifClause, String unlessClause, String description);
+
+ /**
+ * Print the end tag for a target declaration.
+ */
+ public void printTargetEnd();
+
+ /**
+ * Print an echo task
+ * @param file - file to write the message to (or null)
+ * @param message - the message to echo
+ * @param level - the level to report the message (ie, "error", "warning", "info"), "warning" is the default if null is passed.
+ * @since 3.6
+ */
+ public void printEchoTask(String file, String message, String level);
+
+ /**
+ * Print the beginning of a macro definition.
+ * @param macroName the name of the macro
+ * @param attributes the attributes of the macro
+ * @since 3.6
+ */
+ public void printMacroDef(String macroName, List attributes);
+
+ /**
+ * Print the end of the macro
+ * @since 3.6
+ */
+ public void printEndMacroDef();
+}
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IFetchFactory.java b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IFetchFactory.java
new file mode 100644
index 0000000000..7466d5271f
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/IFetchFactory.java
@@ -0,0 +1,134 @@
+/**********************************************************************
+ * Copyright (c) 2004, 2019 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Gunnar Wagenknecht - Initial API and implementation
+ * IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.pde.build;
+
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+
+/**
+ * Interface to be implemented by clients of the org.eclipse.pde.build.fetchFactories
extension-point.
+ *
+ * The factories are being used at various points in the execution of the PDE Build eclipse.fetch
Ant task.
+ * Based on a map file entry, they are responsible for generating segments of an ant script whose execution will fetch
+ * plug-ins, fragments, bundles and features or individual files contained in one of those elements.
+ * The format of a map file entry is:
+ *
+ * <elementType>@<elementName> = <repositoryTag>, <repositoryDetails>
+ *
+ * The format of elementType
and elementName
is fixed.
+ * The factories specify the value of repositoryTag
and the format of the repositoryDetails
.
+ * repositoryTag
and repositoryDetails
becomes defacto APIs.
+ *
+ * repositoryTag
should match the factory id used when declaring the factory extension. For example, for the CVS the value is "CVS".
+ * repositoryDetails
should contains enough details to allow the factory to generate a fetch script retrieving the element.
+ *
+ *
+ * The fetch factories are being contributed through the org.eclipse.pde.build.fetchFactories
+ * extension-points.
+ *
+ *
+ * Fetch factories will not be re-used between different PDE Build eclipse.fetch
Ant tasks. Each task will create at
+ * most one fetch factory instance for the duration of the task processing. This allows implementors to
+ * build and maintain stateful information. Such information must be released in {@link #addTargets(IAntScript)} call.
+ *
+ * @since 3.2
+ */
+public interface IFetchFactory {
+ /** Key used to store the value of the element name. */
+ public static final String KEY_ELEMENT_NAME = "element"; //$NON-NLS-1$
+
+ /** Key used to store the value of the element type */
+ public static final String KEY_ELEMENT_TYPE = "type"; //$NON-NLS-1$
+
+ /** Key used to store the value of the tag that will be used to fetch the element.
+ *
+ * The grammar of the expected value is limited to:
+ *
+ * value::= (alpha|digit|'_'|'-')+
+ * digit ::= [0..9]
+ * alpha ::= [a..zA..Z]
+ *
+ * */
+ public static final String KEY_ELEMENT_TAG = "tag"; //$NON-NLS-1$
+
+ /** One of the value for element type. See {@link #KEY_ELEMENT_TYPE}.*/
+ public static final String ELEMENT_TYPE_BUNDLE = "bundle"; //$NON-NLS-1$
+
+ /** One of the value for element type. See {@link #KEY_ELEMENT_TYPE}.*/
+ public static final String ELEMENT_TYPE_FEATURE = "feature"; //$NON-NLS-1$
+
+ /** One of the value for element type. See {@link #KEY_ELEMENT_TYPE}.*/
+ public static final String ELEMENT_TYPE_FRAGMENT = "fragment"; //$NON-NLS-1$
+
+ /** One of the value for element type. See {@link #KEY_ELEMENT_TYPE}.*/
+ public static final String ELEMENT_TYPE_PLUGIN = "plugin"; //$NON-NLS-1$
+
+ /**
+ * This method should parse / validate a mapfile entry and derive a corresponding
+ * key / value pair structure containing the relevant information.
+ *
+ * The arguments specified in the map file are provided. The map with entry
+ * infos should be filled with provider specific information that is
+ * required in later processing to sucessfully generate the fetch script.
+ *
+ *
+ * Since 3.6, factories may optionally set the {@link Constants#KEY_SOURCE_REFERENCES} property in the entry infos map to support the inclusion
+ * of source references in the bundle manifest using the Eclipse-SourceReferences header.
+ *
+ * @param rawEntry the arguments as specified in the map file (may not be null
).
+ * @param overrideTags a key / value containing all the override tags specified for all the repository (maybe null
or empty).
+ * The values of this map of this are read from the fetchTag property (see file scripts/templates/headless-build/build.properties).
+ * @param entryInfos the map to store repository specific information derived from the rawEntry.This object is being passed as arguments to
+ * the other methods of the factory. The factories are also expected to set {@link #KEY_ELEMENT_TAG} to indicate the tag that will be used
+ * to fetch the element. This value is for example used to generate the "qualifier" value of a version number.
+ * Note that {@link #KEY_ELEMENT_NAME} and {@link #KEY_ELEMENT_TYPE} are reserved entries whose values respectively
+ * refer to the name of the element being fetched and its type.
+ * @throws CoreException if the rawEntry is incorrect.
+ */
+ public void parseMapFileEntry(String rawEntry, Properties overrideTags, Map entryInfos) throws CoreException;
+
+ /**
+ * Generates a segment of ant script whose execution will fetch the element (bundle, plug-in, fragment, feature) indicated in the entryInfos arguments.
+ *
+ * @param entryInfos the map that has been built in the {@link #parseMapFileEntry(String, Properties, Map)} method.
+ * This map contains the name and the type of the element (resp. {@link #KEY_ELEMENT_NAME} and {@link #KEY_ELEMENT_TYPE}) to put in the destination.
+ * @param destination the destination where the element should be fetched to. For example, for a plug-in the plugin.xml
file is expected
+ * to be in destination/plugin.xml
.
+ * @param script the script in which to generate the segments of ant script. It is not authorized to generate target declaration during this call.
+ */
+ public void generateRetrieveElementCall(Map entryInfos, IPath destination, IAntScript script);
+
+ /**
+ * Generates a segment of ant script whose execution will fetch the specified file from the given element.
+ *
+ * @param entryInfos the map that has been built in the {@link #parseMapFileEntry(String, Properties, Map)} method.
+ * This map contains the name and the type of the element (resp. {@link #KEY_ELEMENT_NAME} and {@link #KEY_ELEMENT_TYPE}) to put in the destination.
+ * @param destination the destination where the element should be fetched to. For example, for a plug-in the plugin.xml
file is expected
+ * to be in destination/plugin.xml
.
+ * @param files the files to obtained for the specified element.
+ * @param script the script in which to generate the segments of ant script. It is not authorized to generate target declaration during this call.
+ */
+ public void generateRetrieveFilesCall(Map entryInfos, IPath destination, String[] files, IAntScript script);
+
+ /**
+ * This methods give opportunities to the factory to generate target declaration or other Ant top level constructs in the script.
+ * The generated elements can be invoked from the ant scripts segments created in {@link #generateRetrieveElementCall(Map, IPath, IAntScript)}
+ * and {@link #generateRetrieveFilesCall(Map, IPath, String[], IAntScript)}.
+ */
+ public void addTargets(IAntScript script);
+}
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/package.html b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/package.html
new file mode 100644
index 0000000000..75ff0158ba
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src/org/eclipse/pde/build/package.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Package-level Javadoc
+
+
+Pluggable repository support for eclipse.fetch.
+
+Package Specification
+This package contains the interfaces necessary to contribute a new repository support to the eclipse.fetch task of PDE Build.
+
+
+
diff --git a/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src_ant/META-INF/eclipse.inf b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src_ant/META-INF/eclipse.inf
new file mode 100644
index 0000000000..b4df3ab631
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/org.eclipse.pde.build/src_ant/META-INF/eclipse.inf
@@ -0,0 +1 @@
+jarprocessor.exclude.sign=true
\ No newline at end of file
diff --git a/tycho-its/projects/api-tools/embedded-jars/pom.xml b/tycho-its/projects/api-tools/embedded-jars/pom.xml
new file mode 100644
index 0000000000..4ee027e572
--- /dev/null
+++ b/tycho-its/projects/api-tools/embedded-jars/pom.xml
@@ -0,0 +1,59 @@
+
+
+ 4.0.0
+ org.eclipse.tycho.tycho-its
+ apitools-parent
+ 0.0.1-SNAPSHOT
+ pom
+
+ org.eclipse.pde.build
+
+
+ https://download.eclipse.org/releases/2023-09/
+ https://download.eclipse.org/eclipse/updates/4.29/R-4.29-202309031000/
+
+
+
+ platform
+ ${target-platform}
+ p2
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-maven-plugin
+ ${tycho-version}
+ true
+
+
+ org.eclipse.tycho
+ tycho-apitools-plugin
+ ${tycho-version}
+
+
+
+ baseline
+ ${baselineRepo}
+
+
+
+
+
+ generate
+
+ generate
+
+
+
+ analyse
+
+ verify
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tycho-its/repositories/api-tools/artifacts.xml b/tycho-its/repositories/api-tools/artifacts.xml
index eb6a562902..cfecdd6bf6 100644
--- a/tycho-its/repositories/api-tools/artifacts.xml
+++ b/tycho-its/repositories/api-tools/artifacts.xml
@@ -39,6 +39,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tycho-its/repositories/api-tools/content.xml b/tycho-its/repositories/api-tools/content.xml
index e38f6adb63..05ef0ea318 100644
--- a/tycho-its/repositories/api-tools/content.xml
+++ b/tycho-its/repositories/api-tools/content.xml
@@ -5,7 +5,7 @@
-
+
@@ -99,6 +99,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ Bundle-SymbolicName: org.eclipse.pde.build;singleton:=true
Bundle-Version: 3.12.100.v20230825-1354
+
+
+
+
diff --git a/tycho-its/repositories/api-tools/plugins/org.eclipse.pde.build_3.12.100.v20230825-1354.jar b/tycho-its/repositories/api-tools/plugins/org.eclipse.pde.build_3.12.100.v20230825-1354.jar
new file mode 100644
index 0000000000..6c2b9788f1
Binary files /dev/null and b/tycho-its/repositories/api-tools/plugins/org.eclipse.pde.build_3.12.100.v20230825-1354.jar differ
diff --git a/tycho-its/src/test/java/org/eclipse/tycho/test/apitools/ApiToolsTest.java b/tycho-its/src/test/java/org/eclipse/tycho/test/apitools/ApiToolsTest.java
index 4e864ba36a..fc10af4bf7 100644
--- a/tycho-its/src/test/java/org/eclipse/tycho/test/apitools/ApiToolsTest.java
+++ b/tycho-its/src/test/java/org/eclipse/tycho/test/apitools/ApiToolsTest.java
@@ -88,4 +88,22 @@ public void testApiBreak() throws Exception {
// TODO: check with api-filter
// TODO: check with second plugin with BREE?
}
+
+ /**
+ * This test an api compare where there are only embedded jars but nothing in
+ * the output folder, the expectation is that everything works and no API errors
+ * are reported, in case of problems some invalid API error are reported similar
+ * to "The type org.eclipse.pde.build.Constants has been removed from
+ * org.eclipse.pde.build_3.12.200"
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testEmbeddedJars() throws Exception {
+ Verifier verifier = getVerifier("api-tools/embedded-jars", true, true);
+ File repo = ResourceUtil.resolveTestResource("repositories/api-tools");
+ verifier.addCliOption("-DbaselineRepo=" + repo.toURI());
+ verifier.executeGoals(List.of("clean", "verify"));
+ verifier.verifyErrorFreeLog();
+ }
}