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
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
-rw-r--r--pom.xml26
-rw-r--r--tycho-extras-its/.gitignore8
-rw-r--r--tycho-extras-its/.settings/org.eclipse.jdt.core.prefs288
-rw-r--r--tycho-extras-its/.settings/org.eclipse.jdt.ui.prefs56
-rw-r--r--tycho-extras-its/pom.xml170
-rw-r--r--tycho-extras-its/repositories/.gitignore2
-rw-r--r--tycho-extras-its/settings-its-eclipse-org.xml41
-rw-r--r--tycho-extras-its/settings.xml2
-rw-r--r--tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/AbstractTychoExtrasIntegrationTest.java25
-rw-r--r--tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/TychoMatchers.java36
-rw-r--r--tycho-extras-its/src/test/java/org/eclipse/tycho/extras/pomless/TychoPomlessITest.java38
-rw-r--r--tycho-extras-its/src/test/resources/baseTest.properties6
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/.mvn/extensions.xml8
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF5
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/bundle1.tests/build.properties2
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java21
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF5
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/bundle1/build.properties2
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/feature/build.properties1
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/feature/feature.xml20
-rw-r--r--tycho-extras-its/src/test/resources/testpomless/pom.xml62
-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
58 files changed, 1830 insertions, 0 deletions
diff --git a/pom.xml b/pom.xml
index 3c6dbad..a454621 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,6 +93,7 @@
<module>tycho-buildtimestamp-jgit</module>
<module>tycho-sourceref-jgit</module>
<module>target-platform-validation-plugin</module>
+ <module>tycho-pomless</module>
</modules>
<repositories>
@@ -137,6 +138,18 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>${maven-version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model-builder</artifactId>
+ <version>${maven-version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${plugin-tools-version}</version>
@@ -167,6 +180,7 @@
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-testing-harness</artifactId>
<version>${tycho-version}</version>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.tycho</groupId>
@@ -195,6 +209,11 @@
<type>zip</type>
</dependency>
<dependency>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
@@ -226,6 +245,7 @@
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
+ <id>source-jar</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
@@ -413,6 +433,12 @@
</plugins>
</build>
</profile>
+ <profile>
+ <id>its</id>
+ <modules>
+ <module>tycho-extras-its</module>
+ </modules>
+ </profile>
</profiles>
<distributionManagement>
<site>
diff --git a/tycho-extras-its/.gitignore b/tycho-extras-its/.gitignore
new file mode 100644
index 0000000..a8bef22
--- /dev/null
+++ b/tycho-extras-its/.gitignore
@@ -0,0 +1,8 @@
+# override global rule
+!/.settings/
+
+# only include specified files
+/.settings/*
+!/.settings/org.eclipse.jdt.core.prefs
+!/.settings/org.eclipse.jdt.ui.prefs
+/target/
diff --git a/tycho-extras-its/.settings/org.eclipse.jdt.core.prefs b/tycho-extras-its/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8261a1e
--- /dev/null
+++ b/tycho-extras-its/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,288 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+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-extras-its/.settings/org.eclipse.jdt.ui.prefs b/tycho-extras-its/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..8a73ade
--- /dev/null
+++ b/tycho-extras-its/.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-extras-its/pom.xml b/tycho-extras-its/pom.xml
new file mode 100644
index 0000000..d4f116e
--- /dev/null
+++ b/tycho-extras-its/pom.xml
@@ -0,0 +1,170 @@
+<?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-extras-its</artifactId>
+
+ <name>Tycho Extras Integration Tests (Incubation)</name>
+
+ <properties>
+ <its-maven-version>3.3.3</its-maven-version>
+ <maven-dir>${project.build.directory}/apache-maven-${its-maven-version}</maven-dir>
+ </properties>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/pom.xml</include>
+ <include>**/*.properties</include>
+ <include>**/.mvn/extensions.xml</include>
+ </includes>
+ </testResource>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>false</filtering>
+ <excludes>
+ <exclude>**/pom.xml</exclude>
+ <exclude>**/*.properties</exclude>
+ <exclude>**/.mvn/extensions.xml</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-maven</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>apache-maven</includeArtifactIds>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-p2-extras-plugin</artifactId>
+ <version>0.22.0</version>
+ <executions>
+ <execution>
+ <id>mirror-kepler-test-repo</id>
+ <phase>process-test-classes</phase>
+ <goals>
+ <goal>mirror</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <source>
+ <repository>
+ <url>http://download.eclipse.org/releases/kepler/201402280900/</url>
+ <layout>p2</layout>
+ </repository>
+ </source>
+ <ius>
+ <iu>
+ <id>org.eclipse.osgi</id>
+ <version>3.9.1.v20140110-1610</version>
+ </iu>
+ <iu>
+ <id>org.eclipse.equinox.launcher</id>
+ <version>1.3.0.v20130327-1440</version>
+ </iu>
+ <iu>
+ <id>org.eclipse.core.runtime</id>
+ <version>3.9.100.v20131218-1515</version>
+ </iu>
+ <iu>
+ <id>org.junit</id>
+ <version>4.11.0.v201303080030</version>
+ </iu>
+ </ius>
+ <filter>
+ <osgi.ws>win32</osgi.ws>
+ <osgi.os>win32</osgi.os>
+ <osgi.arch>x86_64</osgi.arch>
+ </filter>
+ <includePacked>false</includePacked>
+ <includeOptional>false</includeOptional>
+ <destination>${project.basedir}/repositories/kepler</destination>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>source-jar</id>
+ <goals>
+ <goal>jar-no-fork</goal>
+ </goals>
+ <phase>NONE</phase>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <!-- test artifacts only, skip deployment-->
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-testing-harness</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-testing-harness</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>apache-maven</artifactId>
+ <version>${its-maven-version}</version>
+ <classifier>bin</classifier>
+ <type>tar.gz</type>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/tycho-extras-its/repositories/.gitignore b/tycho-extras-its/repositories/.gitignore
new file mode 100644
index 0000000..7b18fc7
--- /dev/null
+++ b/tycho-extras-its/repositories/.gitignore
@@ -0,0 +1,2 @@
+# generated test data
+kepler/
diff --git a/tycho-extras-its/settings-its-eclipse-org.xml b/tycho-extras-its/settings-its-eclipse-org.xml
new file mode 100644
index 0000000..c568f23
--- /dev/null
+++ b/tycho-extras-its/settings-its-eclipse-org.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <!-- settings file to be used for executing tycho integration tests (-Dtycho.testSettings=...) on hudson.eclipse.org -->
+ <proxies>
+ <proxy>
+ <id>httpproxy</id>
+ <active>true</active>
+ <protocol>http</protocol>
+ <host>proxy.eclipse.org</host>
+ <port>9898</port>
+ <!-- need to add localhost to nonProxyHosts otherwise ITs contacting localhost will fail-->
+ <nonProxyHosts>localhost|127.0.0.1|*.eclipse.org|172.30.206.*</nonProxyHosts>
+ </proxy>
+ <proxy>
+ <id>httpsproxy</id>
+ <active>true</active>
+ <protocol>https</protocol>
+ <host>proxy.eclipse.org</host>
+ <port>9898</port>
+ <!-- need to add localhost to nonProxyHosts otherwise ITs contacting localhost will fail-->
+ <nonProxyHosts>localhost|127.0.0.1|*.eclipse.org|172.30.206.*</nonProxyHosts>
+ </proxy>
+ </proxies>
+ <profiles>
+ <profile>
+ <id>tycho-extras-its</id>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>tycho-snapshots</id>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <url>https://repo.eclipse.org/content/repositories/tycho-snapshots/</url>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+ <activeProfiles>
+ <activeProfile>tycho-snapshots</activeProfile>
+ </activeProfiles>
+</settings>
diff --git a/tycho-extras-its/settings.xml b/tycho-extras-its/settings.xml
new file mode 100644
index 0000000..985f39b
--- /dev/null
+++ b/tycho-extras-its/settings.xml
@@ -0,0 +1,2 @@
+<settings>
+</settings>
diff --git a/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/AbstractTychoExtrasIntegrationTest.java b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/AbstractTychoExtrasIntegrationTest.java
new file mode 100644
index 0000000..c06b4b6
--- /dev/null
+++ b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/AbstractTychoExtrasIntegrationTest.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * 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.extras.its;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.tycho.test.AbstractTychoIntegrationTest;
+
+public class AbstractTychoExtrasIntegrationTest extends AbstractTychoIntegrationTest {
+
+ @Override
+ protected File getBasedir(String test) throws IOException {
+ return new File("target/test-classes", test).getAbsoluteFile();
+ }
+
+}
diff --git a/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/TychoMatchers.java b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/TychoMatchers.java
new file mode 100644
index 0000000..3c1fcaa
--- /dev/null
+++ b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/its/TychoMatchers.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * 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.extras.its;
+
+import java.io.File;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.junit.internal.matchers.TypeSafeMatcher;
+
+public class TychoMatchers {
+
+ public static Matcher<File> isFile() {
+ return new TypeSafeMatcher<File>() {
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("an existing file");
+ }
+
+ @Override
+ public boolean matchesSafely(File item) {
+ return item.isFile();
+ }
+ };
+ }
+
+}
diff --git a/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/pomless/TychoPomlessITest.java b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/pomless/TychoPomlessITest.java
new file mode 100644
index 0000000..f22312d
--- /dev/null
+++ b/tycho-extras-its/src/test/java/org/eclipse/tycho/extras/pomless/TychoPomlessITest.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * 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.extras.pomless;
+
+import static java.util.Arrays.asList;
+import static org.eclipse.tycho.extras.its.TychoMatchers.isFile;
+import static org.junit.Assert.assertThat;
+
+import java.io.File;
+
+import org.apache.maven.it.Verifier;
+import org.eclipse.tycho.extras.its.AbstractTychoExtrasIntegrationTest;
+import org.junit.Test;
+
+public class TychoPomlessITest extends AbstractTychoExtrasIntegrationTest {
+
+ @Test
+ public void testPomlessBuildExtension() throws Exception {
+ Verifier verifier = getVerifier("testpomless", false);
+ verifier.addCliOption("-Dp2.repo=" + new File("repositories/kepler").getAbsoluteFile().toURI().toString());
+ verifier.executeGoals(asList("clean", "verify"));
+ verifier.verifyErrorFreeLog();
+ // sanity check pom-less if bundle, test bundle and feature have been built
+ File baseDir = new File(verifier.getBasedir());
+ assertThat(new File(baseDir, "bundle1/target/pomless.bundle-0.1.0-SNAPSHOT.jar"), isFile());
+ assertThat(new File(baseDir, "bundle1.tests/target/pomless.bundle.tests-1.0.1.jar"), isFile());
+ assertThat(new File(baseDir, "feature/target/pomless.feature-1.0.0-SNAPSHOT.jar"), isFile());
+ }
+
+}
diff --git a/tycho-extras-its/src/test/resources/baseTest.properties b/tycho-extras-its/src/test/resources/baseTest.properties
new file mode 100644
index 0000000..d129259
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/baseTest.properties
@@ -0,0 +1,6 @@
+# required for ITs (see AbstractTychoIntegrationTest)
+tycho-version=${tycho-version}
+maven-dir=${project.build.directory}/apache-maven-${its-maven-version}
+its-settings=${tycho.testSettings}
+output=${project.build.directory}
+local-repo=${localRepository}
diff --git a/tycho-extras-its/src/test/resources/testpomless/.mvn/extensions.xml b/tycho-extras-its/src/test/resources/testpomless/.mvn/extensions.xml
new file mode 100644
index 0000000..b890ce9
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/testpomless/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+ <extension>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>${tycho-version}</version>
+ </extension>
+</extensions>
diff --git a/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF b/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1252600
--- /dev/null
+++ b/tycho-extras-its/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-extras-its/src/test/resources/testpomless/bundle1.tests/build.properties b/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/build.properties
new file mode 100644
index 0000000..c45bfb5
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,.
+source.. = src/
diff --git a/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java b/tycho-extras-its/src/test/resources/testpomless/bundle1.tests/src/DummyTest.java
new file mode 100644
index 0000000..56495fe
--- /dev/null
+++ b/tycho-extras-its/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-extras-its/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF b/tycho-extras-its/src/test/resources/testpomless/bundle1/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..390c98c
--- /dev/null
+++ b/tycho-extras-its/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-extras-its/src/test/resources/testpomless/bundle1/build.properties b/tycho-extras-its/src/test/resources/testpomless/bundle1/build.properties
new file mode 100644
index 0000000..c45bfb5
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/testpomless/bundle1/build.properties
@@ -0,0 +1,2 @@
+bin.includes = META-INF/,.
+source.. = src/
diff --git a/tycho-extras-its/src/test/resources/testpomless/feature/build.properties b/tycho-extras-its/src/test/resources/testpomless/feature/build.properties
new file mode 100644
index 0000000..64f93a9
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/testpomless/feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/tycho-extras-its/src/test/resources/testpomless/feature/feature.xml b/tycho-extras-its/src/test/resources/testpomless/feature/feature.xml
new file mode 100644
index 0000000..da903db
--- /dev/null
+++ b/tycho-extras-its/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-extras-its/src/test/resources/testpomless/pom.xml b/tycho-extras-its/src/test/resources/testpomless/pom.xml
new file mode 100644
index 0000000..6af11cb
--- /dev/null
+++ b/tycho-extras-its/src/test/resources/testpomless/pom.xml
@@ -0,0 +1,62 @@
+<?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>
+
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>tycho-snapshots</id>
+ <url>${tycho-snapshots-url}</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <repositories>
+ <repository>
+ <id>p2.repo</id>
+ <url>${p2.repo}</url>
+ <layout>p2</layout>
+ </repository>
+ </repositories>
+
+ <modules>
+ <!-- look ma, no poms ! -->
+ <module>bundle1</module>
+ <module>bundle1.tests</module>
+ <module>feature</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
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