Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Sievers2015-03-19 11:26:19 -0400
committerJan Sievers2015-07-13 10:38:18 -0400
commit9d7e9e551917ac4b85787662773c2c10081e36d8 (patch)
tree7ddadcbe16c8856093b469331cfd379234bb0443 /tycho-pomless
parent69d1b35e3e0fca4a0523075be7c14e4ce9fa4545 (diff)
downloadorg.eclipse.tycho.extras-9d7e9e551917ac4b85787662773c2c10081e36d8.tar.gz
org.eclipse.tycho.extras-9d7e9e551917ac4b85787662773c2c10081e36d8.tar.xz
org.eclipse.tycho.extras-9d7e9e551917ac4b85787662773c2c10081e36d8.zip
462531 build extension for pom-less Tycho builds
Add tycho-pomless build extension which can be referenced in a project's .mvn/extensions.xml descriptor (requires maven 3.3.1+ with [1]). build.properties is used as marker file and bundles, test bundles as well as features without pom.xml are supported. Instead of pom.xml, the pom is derived from the following sources: groupId: inherited from parent (must be in parent directory) artifactId: Bundle-SymbolicName from META-INF/MANIFEST.MF or feature id from feature.xml version: Bundle-Version from META-INF/MANIFEST.MF or feature version (with ".qualifier" suffix replaced by "-SNAPSHOT") packaging: "eclipse-plugin" if META-INF/MANIFEST.MF is found "eclipse-feature" if feature.xml is found "eclipse-test-plugin" if META-INF/MANIFEST.MF is found with Bundle-SymbolicName ending with ".tests" [1] https://jira.codehaus.org/browse/MNG-5771 Add new module tycho-extras-its which holds integration tests which are run in a similar way as tycho-its. Run these ITs using maven 3.3.1 which is required for this new feature. Bug: 462531 CQ: 9409 Change-Id: I9159379a35cde80148172228304c9e956ac69b94
Diffstat (limited to 'tycho-pomless')
-rw-r--r--tycho-pomless/.gitignore7
-rw-r--r--tycho-pomless/.settings/org.eclipse.jdt.core.prefs293
-rw-r--r--tycho-pomless/.settings/org.eclipse.jdt.ui.prefs56
-rw-r--r--tycho-pomless/pom.xml67
-rw-r--r--tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoMapping.java30
-rw-r--r--tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoModelReader.java194
-rw-r--r--tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoMappingTest.java41
-rw-r--r--tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoModelReaderTest.java165
-rw-r--r--tycho-pomless/src/test/resources/mapping/precedence/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/mapping/precedence/pom.xml0
-rw-r--r--tycho-pomless/src/test/resources/mapping/simple/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/illFormed/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/illFormed/feature.xml6
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/missingId/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/missingId/feature.xml6
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/missingVersion/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/missingVersion/feature.xml6
-rw-r--r--tycho-pomless/src/test/resources/modelreader/features/pom.xml11
-rw-r--r--tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/grandparentInheritance/pom.xml15
-rw-r--r--tycho-pomless/src/test/resources/modelreader/missingManifestOrFeature/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/noParent/bundle/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/modelreader/noParent/bundle/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/build.properties0
-rw-r--r--tycho-pomless/src/test/resources/modelreader/plugins/pom.xml11
-rw-r--r--tycho-pomless/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/testpomless/bundle1.tests/build.properties2
-rw-r--r--tycho-pomless/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java21
-rw-r--r--tycho-pomless/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF5
-rw-r--r--tycho-pomless/src/test/resources/testpomless/bundle1/build.properties2
-rw-r--r--tycho-pomless/src/test/resources/testpomless/feature/build.properties1
-rw-r--r--tycho-pomless/src/test/resources/testpomless/feature/feature.xml20
-rw-r--r--tycho-pomless/src/test/resources/testpomless/pom.xml22
37 files changed, 1006 insertions, 0 deletions
diff --git a/tycho-pomless/.gitignore b/tycho-pomless/.gitignore
new file mode 100644
index 0000000..abb9537
--- /dev/null
+++ b/tycho-pomless/.gitignore
@@ -0,0 +1,7 @@
+# override global rule
+!/.settings/
+
+# only include specified files
+/.settings/*
+!/.settings/org.eclipse.jdt.core.prefs
+!/.settings/org.eclipse.jdt.ui.prefs
diff --git a/tycho-pomless/.settings/org.eclipse.jdt.core.prefs b/tycho-pomless/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2b70b50
--- /dev/null
+++ b/tycho-pomless/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,293 @@
+eclipse.preferences.version=1
+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=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+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.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+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_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+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_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_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_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.format_block_comments=true
+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=true
+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=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+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=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+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_at_end_of_file_if_missing=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=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_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_binary_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_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=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_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_unary_operator=do not 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_binary_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=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=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not 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_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_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_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=120
+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=true
+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.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+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_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/tycho-pomless/.settings/org.eclipse.jdt.ui.prefs b/tycho-pomless/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8a73ade
--- /dev/null
+++ b/tycho-pomless/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,56 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Tycho
+formatter_settings_version=12
+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_missing_override_annotations_interface_methods=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_type_abstract_if_missing_method=false
+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=false
+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=true
+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=true
+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=true
+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-pomless/pom.xml b/tycho-pomless/pom.xml
new file mode 100644
index 0000000..5bdabfa
--- /dev/null
+++ b/tycho-pomless/pom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Copyright (c) 2015 SAP SE 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:
+ - SAP SE - initial API and implementation
+ -->
+
+<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.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-extras</artifactId>
+ <version>0.24.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>tycho-pomless</artifactId>
+
+ <name>Tycho POM-less build extension (Incubation)</name>
+ <description>A build extension which allows to omit pom.xml files for bundles and features.
+ Maven groupId is inherited from the mandatory parent pom in the parent directory, artifactId and version are derived from MANIFEST.MF and feature.xml
+ </description>
+
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.takari.polyglot</groupId>
+ <artifactId>polyglot-common</artifactId>
+ <version>0.1.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <version>0.3.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model-builder</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoMapping.java b/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoMapping.java
new file mode 100644
index 0000000..1e742e1
--- /dev/null
+++ b/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoMapping.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2015 SAP SE 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tycho.pomless;
+
+import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.maven.polyglot.mapping.Mapping;
+import org.sonatype.maven.polyglot.mapping.MappingSupport;
+
+@Component(role = Mapping.class, hint = "tycho")
+public class TychoMapping extends MappingSupport {
+
+ public TychoMapping() {
+ super("tycho");
+ // can't check for META-INF/MANIFEST.MF as this is in a subfolder and maven (and tycho) assumes
+ // in many places that the pom file is located in the project base dir, so we just use build.properties as a marker file
+ setPomNames("build.properties");
+ setAcceptLocationExtensions("build.properties");
+ // make sure priority is lower than pom.xml (XmlMapping) so we can still override and use pom.xml if needed
+ setPriority(-2);
+ }
+
+}
diff --git a/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoModelReader.java b/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoModelReader.java
new file mode 100644
index 0000000..48b263f
--- /dev/null
+++ b/tycho-pomless/src/main/java/org/eclipse/tycho/pomless/TychoModelReader.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2015 SAP SE 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tycho.pomless;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
+import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.model.io.ModelParseException;
+import org.apache.maven.model.io.ModelReader;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.sonatype.maven.polyglot.PolyglotModelManager;
+import org.sonatype.maven.polyglot.PolyglotModelUtil;
+import org.sonatype.maven.polyglot.io.ModelReaderSupport;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * Tycho POM model reader. Deduces maven model artifactId and version from OSGi manifest
+ * Bundle-SymbolicName and Bundle-Version headers or feature.xml id and version attributes. Assumes
+ * parent pom is located in parent directory (from which groupId is inherited). Bundles with
+ * Bundle-SymbolicName ending with ".tests" will be assigned packaging type "eclipse-test-plugin".
+ */
+@Component(role = ModelReader.class, hint = "tycho")
+public class TychoModelReader extends ModelReaderSupport {
+
+ private static final String BUNDLE_SYMBOLIC_NAME = "Bundle-SymbolicName";
+ private static final String QUALIFIER_SUFFIX = ".qualifier";
+
+ @Requirement
+ private PolyglotModelManager polyglotModelManager;
+
+ public TychoModelReader() {
+ }
+
+ public Model read(Reader input, Map<String, ?> options) throws IOException, ModelParseException {
+ File projectRoot = new File(PolyglotModelUtil.getLocation(options)).getParentFile();
+ File manifestFile = new File(projectRoot, "META-INF/MANIFEST.MF");
+ File featureXml = new File(projectRoot, "feature.xml");
+ if (manifestFile.isFile()) {
+ return createPomFromManifest(manifestFile);
+ } else if (featureXml.isFile()) {
+ return createPomFromFeatureXml(featureXml);
+ } else {
+ throw new IOException("Neither META-INF/MANIFEST.MF nor feature.xml found in " + projectRoot);
+ }
+ }
+
+ private Model createPomFromManifest(File manifestFile) throws IOException, ModelParseException {
+ Attributes headers = readManifestHeaders(manifestFile);
+ String bundleSymbolicName = getBundleSymbolicName(headers, manifestFile);
+ Model model = createModel();
+ model.setParent(findParent(manifestFile.getParentFile().getParentFile()));
+ // groupId is inherited from parent pom
+ model.setArtifactId(bundleSymbolicName);
+ String bundleVersion = getRequiredHeaderValue("Bundle-Version", headers, manifestFile);
+ model.setVersion(getPomVersion(bundleVersion));
+ model.setPackaging(getPackagingType(bundleSymbolicName));
+ return model;
+ }
+
+ private Model createPomFromFeatureXml(File featureXml) throws IOException, ModelParseException {
+ Document doc;
+ try {
+ DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ doc = parser.parse(featureXml);
+ } catch (ParserConfigurationException e) {
+ throw new RuntimeException(e);
+ } catch (SAXException e) {
+ throw new ModelParseException(e.getMessage(), -1, -1);
+ }
+ Element root = doc.getDocumentElement();
+ Model model = createModel();
+ model.setParent(findParent(featureXml.getParentFile()));
+ Attr featureIdNode = root.getAttributeNode("id");
+ if (featureIdNode == null) {
+ throw new ModelParseException("missing feature id in " + featureXml.getAbsolutePath(), -1, -1);
+ }
+ model.setArtifactId(featureIdNode.getValue());
+ Attr featureVersionNode = root.getAttributeNode("version");
+ if (featureVersionNode == null) {
+ throw new ModelParseException("missing feature version in " + featureXml.getAbsolutePath(), -1, -1);
+ }
+ model.setVersion(getPomVersion(featureVersionNode.getValue()));
+ model.setPackaging("eclipse-feature");
+ // groupId is inherited from parent pom
+ return model;
+ }
+
+ private Model createModel() {
+ Model model = new Model();
+ model.setModelVersion("4.0.0");
+ return model;
+ }
+
+ private String getBundleSymbolicName(Attributes headers, File manifestFile) throws ModelParseException {
+ String symbolicName = getRequiredHeaderValue(BUNDLE_SYMBOLIC_NAME, headers, manifestFile);
+ // strip off any directives/attributes
+ int semicolonIndex = symbolicName.indexOf(';');
+ if (semicolonIndex > 0) {
+ symbolicName = symbolicName.substring(0, semicolonIndex);
+ }
+ return symbolicName;
+ }
+
+ private String getRequiredHeaderValue(String headerKey, Attributes headers, File manifestFile)
+ throws ModelParseException {
+ String value = headers.getValue(headerKey);
+ if (value == null) {
+ throw new ModelParseException("Required header " + headerKey + " missing in " + manifestFile, -1, -1);
+ }
+ return value;
+ }
+
+ private Attributes readManifestHeaders(File manifestFile) throws IOException {
+ Manifest manifest = new Manifest();
+ FileInputStream stream = new FileInputStream(manifestFile);
+ try {
+ manifest.read(stream);
+ } finally {
+ stream.close();
+ }
+ return manifest.getMainAttributes();
+ }
+
+ private static String getPomVersion(String pdeVersion) {
+ String pomVersion = pdeVersion;
+ if (pdeVersion.endsWith(QUALIFIER_SUFFIX)) {
+ pomVersion = pdeVersion.substring(0, pdeVersion.length() - QUALIFIER_SUFFIX.length()) + "-SNAPSHOT";
+ }
+ return pomVersion;
+ }
+
+ private String getPackagingType(String symbolicName) {
+ // assume test bundles end with ".tests"
+ if (symbolicName.endsWith(".tests")) {
+ return "eclipse-test-plugin";
+ } else {
+ return "eclipse-plugin";
+ }
+ }
+
+ Parent findParent(File projectRoot) throws ModelParseException, IOException {
+ // assumption/limitation: parent pom must be physically located in
+ // parent directory
+ File parentPom = polyglotModelManager.locatePom(projectRoot.getParentFile());
+ if (parentPom == null) {
+ throw new FileNotFoundException("No parent pom file found in " + projectRoot.getParentFile());
+ }
+ Map<String, File> options = new HashMap<String, File>(4);
+ options.put(ModelProcessor.SOURCE, parentPom);
+ ModelReader reader = polyglotModelManager.getReaderFor(options);
+ Model parentModel = reader.read(parentPom, options);
+ Parent parentReference = new Parent();
+ String groupId = parentModel.getGroupId();
+ if (groupId == null) {
+ // must be inherited from grandparent
+ groupId = parentModel.getParent().getGroupId();
+ }
+ parentReference.setGroupId(groupId);
+ parentReference.setArtifactId(parentModel.getArtifactId());
+ String version = parentModel.getVersion();
+ if (version == null) {
+ // must be inherited from grandparent
+ version = parentModel.getParent().getVersion();
+ }
+ parentReference.setVersion(version);
+ return parentReference;
+ }
+}
diff --git a/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoMappingTest.java b/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoMappingTest.java
new file mode 100644
index 0000000..9cc5007
--- /dev/null
+++ b/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoMappingTest.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2015 SAP SE 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tycho.pomless;
+
+import java.io.File;
+
+import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.maven.polyglot.PolyglotModelManager;
+
+public class TychoMappingTest extends PlexusTestCase {
+
+ private PolyglotModelManager polyglotModelManager;
+
+ @Override
+ protected void setUp() throws Exception {
+ polyglotModelManager = lookup(PolyglotModelManager.class);
+ }
+
+ public void testLocateBuildProperties() throws Exception {
+ File pom = polyglotModelManager.locatePom(new File(getMappingTestDir(), "simple"));
+ assertEquals("build.properties", pom.getName());
+ }
+
+ public void testPriority() throws Exception {
+ File pom = polyglotModelManager.locatePom(new File(getMappingTestDir(), "precedence"));
+ assertEquals("pom.xml must win over build.properties", "pom.xml", pom.getName());
+ }
+
+ private File getMappingTestDir() {
+ return new File(getBasedir(), "src/test/resources/mapping/");
+ }
+
+}
diff --git a/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoModelReaderTest.java b/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoModelReaderTest.java
new file mode 100644
index 0000000..da61919
--- /dev/null
+++ b/tycho-pomless/src/test/java/org/eclipse/tycho/pomless/TychoModelReaderTest.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2015 SAP SE 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tycho.pomless;
+
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
+import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.model.io.ModelParseException;
+import org.apache.maven.model.io.ModelReader;
+import org.codehaus.plexus.PlexusTestCase;
+
+public class TychoModelReaderTest extends PlexusTestCase {
+
+ private TychoModelReader tychoModelReader;
+
+ @Override
+ protected void setUp() throws Exception {
+ tychoModelReader = (TychoModelReader) lookup(ModelReader.class, "tycho");
+ }
+
+ public void testReadBundle() throws Exception {
+ File buildProperties = new File(getPolyglotTestDir(), "bundle1/build.properties");
+ Model model = tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ assertEquals("4.0.0", model.getModelVersion());
+ assertEquals("pomless.bundle", model.getArtifactId());
+ assertEquals("0.1.0-SNAPSHOT", model.getVersion());
+ assertEquals("eclipse-plugin", model.getPackaging());
+ assertParent(model.getParent());
+ }
+
+ public void testReadTestBundle() throws Exception {
+ File buildProperties = new File(getPolyglotTestDir(), "bundle1.tests/build.properties");
+ Model model = tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ assertEquals("pomless.bundle.tests", model.getArtifactId());
+ assertEquals("1.0.1", model.getVersion());
+ assertEquals("eclipse-test-plugin", model.getPackaging());
+ assertParent(model.getParent());
+ }
+
+ public void testReadFeature() throws Exception {
+ File buildProperties = new File(getPolyglotTestDir(), "feature/build.properties");
+ Model model = tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ assertEquals("pomless.feature", model.getArtifactId());
+ assertEquals("1.0.0-SNAPSHOT", model.getVersion());
+ assertEquals("eclipse-feature", model.getPackaging());
+ assertParent(model.getParent());
+ }
+
+ public void testMissingManifestOrFeature() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/missingManifestOrFeature/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (IOException e) {
+ // expected
+ }
+ }
+
+ public void testIllFormedFeature() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/features/illFormed/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (ModelParseException e) {
+ // expected
+ }
+ }
+
+ public void testFeatureWithoutId() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/features/missingId/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (ModelParseException e) {
+ assertThat(e.getMessage(), containsString("missing feature id in"));
+ }
+ }
+
+ public void testFeatureWithoutVersion() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/features/missingVersion/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (ModelParseException e) {
+ assertThat(e.getMessage(), containsString("missing feature version in"));
+ }
+ }
+
+ public void testBundleWithoutSymbolicName() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/plugins/missingBsn/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (ModelParseException e) {
+ assertThat(e.getMessage(), containsString("Bundle-SymbolicName missing in"));
+ }
+ }
+
+ public void testBundleWithoutVersion() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/plugins/missingVersion/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (ModelParseException e) {
+ assertThat(e.getMessage(), containsString("Bundle-Version missing in"));
+ }
+ }
+
+ public void testNoParent() throws Exception {
+ File buildProperties = new File(getTestResourcesDir(), "modelreader/noParent/bundle/build.properties");
+ try {
+ tychoModelReader.read((Reader) null, createReaderOptions(buildProperties));
+ fail();
+ } catch (IOException e) {
+ assertThat(e.getMessage(), containsString("No parent pom file found in"));
+ }
+ }
+
+ public void testFindParent() throws Exception {
+ Parent parentReference = tychoModelReader.findParent(new File(getTestResourcesDir(),
+ "modelreader/grandparentInheritance/bundle/"));
+ assertEquals("bundle-parent", parentReference.getArtifactId());
+ assertEquals("grandparent.groupid", parentReference.getGroupId());
+ assertEquals("1.2.3", parentReference.getVersion());
+ }
+
+ private void assertParent(Parent parent) {
+ assertNotNull(parent);
+ assertEquals("testParent.groupId", parent.getGroupId());
+ assertEquals("testparent", parent.getArtifactId());
+ assertEquals("0.0.1-SNAPSHOT", parent.getVersion());
+ }
+
+ private Map<String, String> createReaderOptions(File buildProperties) {
+ Map<String, String> options = new HashMap<String, String>();
+ options.put(ModelProcessor.SOURCE, buildProperties.getAbsolutePath());
+ return options;
+ }
+
+ private File getPolyglotTestDir() {
+ return new File(getTestResourcesDir(), "testpomless/");
+ }
+
+ private File getTestResourcesDir() {
+ return new File(getBasedir(), "src/test/resources/");
+ }
+
+}
diff --git a/tycho-pomless/src/test/resources/mapping/precedence/build.properties b/tycho-pomless/src/test/resources/mapping/precedence/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/mapping/precedence/build.properties
diff --git a/tycho-pomless/src/test/resources/mapping/precedence/pom.xml b/tycho-pomless/src/test/resources/mapping/precedence/pom.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/mapping/precedence/pom.xml
diff --git a/tycho-pomless/src/test/resources/mapping/simple/build.properties b/tycho-pomless/src/test/resources/mapping/simple/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/mapping/simple/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/features/illFormed/build.properties b/tycho-pomless/src/test/resources/modelreader/features/illFormed/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/illFormed/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/features/illFormed/feature.xml b/tycho-pomless/src/test/resources/modelreader/features/illFormed/feature.xml
new file mode 100644
index 0000000..898757a
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/illFormed/feature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="pomless.feature"
+ version="1.0.0.qualifier">
+
+</feature_NOT_WELL_FORMED>
diff --git a/tycho-pomless/src/test/resources/modelreader/features/missingId/build.properties b/tycho-pomless/src/test/resources/modelreader/features/missingId/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/missingId/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/features/missingId/feature.xml b/tycho-pomless/src/test/resources/modelreader/features/missingId/feature.xml
new file mode 100644
index 0000000..1374081
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/missingId/feature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ MISSING_ID="pomless.feature"
+ version="1.0.0.qualifier">
+
+</feature>
diff --git a/tycho-pomless/src/test/resources/modelreader/features/missingVersion/build.properties b/tycho-pomless/src/test/resources/modelreader/features/missingVersion/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/missingVersion/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/features/missingVersion/feature.xml b/tycho-pomless/src/test/resources/modelreader/features/missingVersion/feature.xml
new file mode 100644
index 0000000..803d921
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/missingVersion/feature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="pomless.feature"
+ MISSING_VERSION="1.0.0.qualifier">
+
+</feature>
diff --git a/tycho-pomless/src/test/resources/modelreader/features/pom.xml b/tycho-pomless/src/test/resources/modelreader/features/pom.xml
new file mode 100644
index 0000000..5a8d2eb
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/features/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <groupId>testParent.groupId</groupId>
+ <artifactId>feature-testparent</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+</project>
diff --git a/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ce659e2
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: pomless.bundle
+Bundle-Version: 0.1.0.qualifier
+
diff --git a/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/build.properties b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/bundle/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/pom.xml b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/pom.xml
new file mode 100644
index 0000000..8c5dca9
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/grandparentInheritance/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>grandparent.groupid</groupId>
+ <artifactId>grandparent.artifactId</artifactId>
+ <version>1.2.3</version>
+ </parent>
+ <!-- groupId and version inherited from grandparent -->
+ <artifactId>bundle-parent</artifactId>
+ <packaging>pom</packaging>
+
+</project>
diff --git a/tycho-pomless/src/test/resources/modelreader/missingManifestOrFeature/build.properties b/tycho-pomless/src/test/resources/modelreader/missingManifestOrFeature/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/missingManifestOrFeature/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/noParent/bundle/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/modelreader/noParent/bundle/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..390c98c
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/noParent/bundle/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: pomless.bundle;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+
diff --git a/tycho-pomless/src/test/resources/modelreader/noParent/bundle/build.properties b/tycho-pomless/src/test/resources/modelreader/noParent/bundle/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/noParent/bundle/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7db3cad
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Missing-Bundle-SymbolicName: pomless.bundle;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+
diff --git a/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/build.properties b/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/plugins/missingBsn/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7681299
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: pomless.bundle;singleton:=true
+Missing-Bundle-Version: 0.1.0.qualifier
+
diff --git a/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/build.properties b/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/build.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/plugins/missingVersion/build.properties
diff --git a/tycho-pomless/src/test/resources/modelreader/plugins/pom.xml b/tycho-pomless/src/test/resources/modelreader/plugins/pom.xml
new file mode 100644
index 0000000..210c387
--- /dev/null
+++ b/tycho-pomless/src/test/resources/modelreader/plugins/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+
+ <groupId>testParent.groupId</groupId>
+ <artifactId>plugins-testparent</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+</project>
diff --git a/tycho-pomless/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1252600
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: pomless.bundle.tests
+Bundle-Version: 1.0.1
+Require-Bundle: org.junit;bundle-version="4.0.0"
diff --git a/tycho-pomless/src/test/resources/testpomless/bundle1.tests/build.properties b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/build.properties
new file mode 100644
index 0000000..c45bfb5
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,.
+source.. = src/
diff --git a/tycho-pomless/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java
new file mode 100644
index 0000000..56495fe
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2015 SAP SE 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:
+ * SAP SE - initial API and implementation
+ *******************************************************************************/
+import org.junit.Assert;
+import org.junit.Test;
+
+public class DummyTest {
+
+ @Test
+ public void test() {
+ Assert.assertTrue(true);
+ }
+
+}
diff --git a/tycho-pomless/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF b/tycho-pomless/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..390c98c
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: pomless.bundle;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+
diff --git a/tycho-pomless/src/test/resources/testpomless/bundle1/build.properties b/tycho-pomless/src/test/resources/testpomless/bundle1/build.properties
new file mode 100644
index 0000000..c45bfb5
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/bundle1/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,.
+source.. = src/
diff --git a/tycho-pomless/src/test/resources/testpomless/feature/build.properties b/tycho-pomless/src/test/resources/testpomless/feature/build.properties
new file mode 100644
index 0000000..64f93a9
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/tycho-pomless/src/test/resources/testpomless/feature/feature.xml b/tycho-pomless/src/test/resources/testpomless/feature/feature.xml
new file mode 100644
index 0000000..da903db
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/feature/feature.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="pomless.feature"
+ version="1.0.0.qualifier">
+
+ <plugin
+ id="pomless.bundle"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="pomless.bundle.tests"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/tycho-pomless/src/test/resources/testpomless/pom.xml b/tycho-pomless/src/test/resources/testpomless/pom.xml
new file mode 100644
index 0000000..acd2d1f
--- /dev/null
+++ b/tycho-pomless/src/test/resources/testpomless/pom.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Copyright (c) 2015 SAP SE 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:
+ - SAP SE - initial API and implementation
+ -->
+
+<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>
+
+ <groupId>testParent.groupId</groupId>
+ <artifactId>testparent</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+</project>

Back to the top