buildr-bnd 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,21 +1,25 @@
1
- 0.0.5 (September 8, 2010)
2
- * Added: The bnd parameter "Include-Resource" defaults to project.resources.target if it exists.
3
- * Added: The bnd.classpath setting was added.
4
- * Changed: The extension no longer defaults the bnd parameters "Import-Package" and "Export-Package" to *
5
- * Changed: Stop using absolute paths in requires.
6
- * Changed: Renamed main.rb to core.rb.
7
-
8
- 0.0.4 (July 5, 2010)
9
- * Changed: Separated code into separate files, moved project extension code into a separate module and moved
10
- the code into a hierarchy matching the module hierarchy.
11
- * Added: Add class containing version information about the plugin.
12
-
13
- 0.0.3 (June 1, 2010)
14
- * Added: Buildr::Bnd.remote_repository method to get remote repository for bnd dependency.
15
- * Deprecated: Buildr::Bnd.remote_repositories method that returned an array of repositories for bnd dependency.
16
-
17
- 0.0.2 (April 17, 2010)
18
- * Added: Supported classpath_element method on package task
19
-
20
- 0.0.1 (April 16, 2010)
21
- * Initial Release
1
+ 0.0.6 (October 12, 2010)
2
+ * Added: The bnd directive "-removeheaders" defaults to "Include-Resource,Bnd-LastModified,Created-By,Implementation-Title,Tool".
3
+ This removes several *uninteresting* manifest headers.
4
+
5
+ 0.0.5 (September 8, 2010)
6
+ * Added: The bnd parameter "Include-Resource" defaults to project.resources.target if it exists.
7
+ * Added: The bnd.classpath setting was added.
8
+ * Changed: The extension no longer defaults the bnd parameters "Import-Package" and "Export-Package" to *
9
+ * Changed: Stop using absolute paths in requires.
10
+ * Changed: Renamed main.rb to core.rb.
11
+
12
+ 0.0.4 (July 5, 2010)
13
+ * Changed: Separated code into separate files, moved project extension code into a separate module and moved
14
+ the code into a hierarchy matching the module hierarchy.
15
+ * Added: Add class containing version information about the plugin.
16
+
17
+ 0.0.3 (June 1, 2010)
18
+ * Added: Buildr::Bnd.remote_repository method to get remote repository for bnd dependency.
19
+ * Deprecated: Buildr::Bnd.remote_repositories method that returned an array of repositories for bnd dependency.
20
+
21
+ 0.0.2 (April 17, 2010)
22
+ * Added: Supported classpath_element method on package task
23
+
24
+ 0.0.1 (April 16, 2010)
25
+ * Initial Release
data/LICENSE CHANGED
@@ -1,176 +1,176 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
@@ -1,230 +1,230 @@
1
- = buildr-bnd
2
-
3
- This is a Buildr extension for packaging OSGi bundles using Bnd (See
4
- http://www.aqute.biz/Code/Bnd). The extension allows the user to define
5
- properties/directives to be supplied to the Bnd tool and provides
6
- reasonable defaults for those that can be derived from the project
7
- model. Please see the bnd tool for documentation on the available
8
- properties.
9
-
10
- The 'bnd' setting is used to provide directives to the bnd tool that
11
- are not inherited by subprojects while the standard 'manifest' setting is
12
- used to define properties that inherited by subprojects.
13
-
14
- A typical project that uses the extension may look something like;
15
-
16
- define 'myProject' do
17
- ...
18
- package(:bundle).tap do |bnd|
19
- bnd['Import-Package'] = "*;resolution:=optional"
20
- bnd['Export-Package'] = "*;version=#{version}"
21
- end
22
- ...
23
- end
24
-
25
- == Installation
26
-
27
- The extension is packaged as a gem named "buildr-iidea", consult the ruby gems installation
28
- steps but typically it is either
29
-
30
- sudo gem install buildr-bnd
31
-
32
- for MRI ruby or
33
-
34
- jgem install buildr-bnd
35
-
36
- for jruby.
37
-
38
- The user then needs to add the following require into the build file:
39
-
40
- require 'buildr_bnd'
41
-
42
- If the local maven repository does not contain the required bnd jars they can be downloaded
43
- but you will need to register the remote repository by adding the following to the build file:
44
-
45
- repositories.remote << Buildr::Bnd.remote_repository
46
-
47
- == Defaults
48
-
49
- The extension sets the following bnd parameters;
50
-
51
- * <tt>"Bundle-Version"</tt> defaults to the project version.
52
- * <tt>"Bundle-SymbolicName"</tt> defaults to the concatenation of the project group
53
- and project id, replacing ':' characters with '.'.
54
- * <tt>"Bundle-Name"</tt> defaults to the project description if present else the project
55
- name
56
- * <tt>"Bundle-Description"</tt> defaults to the project description.
57
- * <tt>"-classpath"</tt> is set to the compile target directory and any compile time
58
- dependencies.
59
- * <tt>"Include-Resource"</tt> defaults to the dir project.resources.target if it exists.
60
-
61
- == Parameters
62
-
63
- === classpath_element
64
-
65
- The user can also specify additional elements that are added to the classpath
66
- using the 'classpath_element' method. If the parameter to this element is a
67
- task, artifact, artifact namespace etc. then it will be resolved prior to invoking
68
- bnd.
69
-
70
- define 'foo' do
71
- ...
72
- package(:bundle).tap do |bnd|
73
- # This dependency will be added to classpath
74
- bnd.classpath_element 'someOtherExistingFile.zip'
75
- # All of these dependencies will be invoked and added to classpath
76
- bnd.classpath_element artifact('com.sun.messaging.mq:imq:jar:4.4')
77
- bnd.classpath_element project('bar') # Adds all the packages
78
- bnd.classpath_element 'org.apache.ant:ant:jar:1.8.0'
79
- bnd.classpath_element file('myLocalFile.jar')
80
- ...
81
- end
82
-
83
- project 'bar' do
84
- ...
85
- end
86
- end
87
-
88
- === classpath
89
-
90
- The user can specify the complete classpath using the 'classpath' method. The classpath
91
- should be an array of elements. If the element is a task, artifact, artifact namespace etc.
92
- then it will be resolved prior to invoking bnd.
93
-
94
- define 'foo' do
95
- ...
96
- package(:bundle).tap do |bnd|
97
- bnd.classpath [ project.compile.target,
98
- 'someOtherExistingFile.zip',
99
- artifact('com.sun.messaging.mq:imq:jar:4.4'),
100
- project('bar'),
101
- 'org.apache.ant:ant:jar:1.8.0',
102
- file('myLocalFile.jar') ]
103
- ...
104
- end
105
-
106
- project 'bar' do
107
- ...
108
- end
109
- end
110
-
111
-
112
- == Examples
113
-
114
- === Including non-class resources in a bundle
115
-
116
- Bnd can be used to include non-class resources in a bundle. The following
117
- example includes all resources in 'src/etc' into the bundle.
118
-
119
- require 'buildr_bnd'
120
-
121
- desc 'Including resources example'
122
- define 'myproject' do
123
- ...
124
- package(:bundle).tap do |bnd|
125
- bnd['Include-Resource'] = project._('src/etc') + '/'
126
- ...
127
- end
128
- end
129
-
130
- === Using bnd to wrap an existing jar
131
-
132
- Bnd can be used to wrap an existing jar as an OSGi bundle. The following
133
- example wraps the OpenMQ JMS provider as an OSGi bundle.
134
-
135
- require 'buildr_bnd'
136
-
137
- # Add repository for OpenMQ
138
- repositories.remote << 'http://download.java.net/maven/2'
139
-
140
- desc 'OSGi bundle for OpenMQ JMS provider client library'
141
- define 'com.sun.messaging.mq.imq' do
142
- project.version = '4.4'
143
- project.group = 'iris'
144
- package(:bundle).tap do |bnd|
145
- bnd['Import-Package'] = "*;resolution:=optional"
146
- bnd['Export-Package'] = "com.sun.messaging.*;version=#{version}"
147
- bnd.classpath_element 'com.sun.messaging.mq:imq:jar:4.4'
148
- end
149
- end
150
-
151
- === Create an OSGi bundle with an Activator
152
-
153
- The following example presents a basic buildfile for building an OSGi bundle with
154
- an activator.
155
-
156
- require 'buildr_bnd'
157
-
158
- # repository for OSGi core bundle
159
- repositories.remote << 'https://repository.apache.org/content/repositories/releases'
160
-
161
- desc 'Hello World bundle'
162
- define 'helloworld' do
163
- project.version = '1.0'
164
- project.group = 'org.example'
165
- compile.with 'org.apache.felix:org.osgi.core:jar:1.4.0'
166
- package(:bundle).tap do |bnd|
167
- bnd['Export-Package'] = "org.example.helloworld.api.*;version=#{version}"
168
- bnd['Bundle-Activator'] = "org.example.helloworld.Activator"
169
- end
170
- end
171
-
172
- === Inheriting parameters for bnd tool
173
-
174
- The following example shows how you can use 'manifest' to define a bnd parameter that is inherited
175
- to all child subprojects. The "Bundle-License" defined in the top level project is passed to the bnd
176
- tool when generating both the 'fe' and 'fi' subprojects but the 'fo' subproject overrides this
177
- parameter withy a local value.
178
-
179
- require 'buildr_bnd'
180
-
181
- define 'myproject' do
182
- manifest['Bundle-License'] = "http://www.apache.org/licenses/LICENSE-2.0"
183
- ...
184
- define 'fe' do
185
- ...
186
- package(:bundle).tap do |bnd|
187
- ...
188
- end
189
- end
190
-
191
- define 'fi' do
192
- ...
193
- package(:bundle).tap do |bnd|
194
- ...
195
- end
196
- end
197
-
198
- define 'fo' do
199
- ...
200
- package(:bundle).tap do |bnd|
201
- bnd['Bundle-License'] = "http://www.apache.org/licenses/LICENSE-1.1"
202
- end
203
- end
204
- end
205
-
206
- == Future Work
207
-
208
- The following is a list of feature requests for future versions of the extension. Feel free to
209
- jump in and supply a patch if you have gone ahead and implemented the feature.
210
-
211
- === Support Embed-Dependency equivalent
212
-
213
- The maven-bundle-plugin supports Embed-Dependency which can include a jar inside the bundle,
214
- add manifest directives to include it in the export calculations. One "Embed-Dependency"
215
- directive may turn into something like
216
-
217
- -classpath=com.ibm.mq.jar
218
- Include-Resource=com.ibm.mq.jar
219
- Bundle-Classpath=.,com.ibm.mq.jar
220
- Private-Package=!*
221
- -exportcontents: com.ibm.mq.*
222
-
223
- For further discussion on this see;
224
- * http://www.mail-archive.com/users@felix.apache.org/msg06625.html
225
- * http://www.mail-archive.com/users@felix.apache.org/msg06626.html
226
-
227
- == Credit
228
-
229
- The plugin was heavily inspired by the bnd tasks originally authored by Rhett Sutphin. It began
230
- life as a fork but has been rewritten from scratch to use a different approach.
1
+ = buildr-bnd
2
+
3
+ This is a Buildr extension for packaging OSGi bundles using Bnd (See
4
+ http://www.aqute.biz/Code/Bnd). The extension allows the user to define
5
+ properties/directives to be supplied to the Bnd tool and provides
6
+ reasonable defaults for those that can be derived from the project
7
+ model. Please see the bnd tool for documentation on the available
8
+ properties.
9
+
10
+ The 'bnd' setting is used to provide directives to the bnd tool that
11
+ are not inherited by subprojects while the standard 'manifest' setting is
12
+ used to define properties that inherited by subprojects.
13
+
14
+ A typical project that uses the extension may look something like;
15
+
16
+ define 'myProject' do
17
+ ...
18
+ package(:bundle).tap do |bnd|
19
+ bnd['Import-Package'] = "*;resolution:=optional"
20
+ bnd['Export-Package'] = "*;version=#{version}"
21
+ end
22
+ ...
23
+ end
24
+
25
+ == Installation
26
+
27
+ The extension is packaged as a gem named "buildr-iidea", consult the ruby gems installation
28
+ steps but typically it is either
29
+
30
+ sudo gem install buildr-bnd
31
+
32
+ for MRI ruby or
33
+
34
+ jgem install buildr-bnd
35
+
36
+ for jruby.
37
+
38
+ The user then needs to add the following require into the build file:
39
+
40
+ require 'buildr_bnd'
41
+
42
+ If the local maven repository does not contain the required bnd jars they can be downloaded
43
+ but you will need to register the remote repository by adding the following to the build file:
44
+
45
+ repositories.remote << Buildr::Bnd.remote_repository
46
+
47
+ == Defaults
48
+
49
+ The extension sets the following bnd parameters;
50
+
51
+ * <tt>"Bundle-Version"</tt> defaults to the project version.
52
+ * <tt>"Bundle-SymbolicName"</tt> defaults to the concatenation of the project group
53
+ and project id, replacing ':' characters with '.'.
54
+ * <tt>"Bundle-Name"</tt> defaults to the project description if present else the project
55
+ name
56
+ * <tt>"Bundle-Description"</tt> defaults to the project description.
57
+ * <tt>"-classpath"</tt> is set to the compile target directory and any compile time
58
+ dependencies.
59
+ * <tt>"Include-Resource"</tt> defaults to the dir project.resources.target if it exists.
60
+
61
+ == Parameters
62
+
63
+ === classpath_element
64
+
65
+ The user can also specify additional elements that are added to the classpath
66
+ using the 'classpath_element' method. If the parameter to this element is a
67
+ task, artifact, artifact namespace etc. then it will be resolved prior to invoking
68
+ bnd.
69
+
70
+ define 'foo' do
71
+ ...
72
+ package(:bundle).tap do |bnd|
73
+ # This dependency will be added to classpath
74
+ bnd.classpath_element 'someOtherExistingFile.zip'
75
+ # All of these dependencies will be invoked and added to classpath
76
+ bnd.classpath_element artifact('com.sun.messaging.mq:imq:jar:4.4')
77
+ bnd.classpath_element project('bar') # Adds all the packages
78
+ bnd.classpath_element 'org.apache.ant:ant:jar:1.8.0'
79
+ bnd.classpath_element file('myLocalFile.jar')
80
+ ...
81
+ end
82
+
83
+ project 'bar' do
84
+ ...
85
+ end
86
+ end
87
+
88
+ === classpath
89
+
90
+ The user can specify the complete classpath using the 'classpath' method. The classpath
91
+ should be an array of elements. If the element is a task, artifact, artifact namespace etc.
92
+ then it will be resolved prior to invoking bnd.
93
+
94
+ define 'foo' do
95
+ ...
96
+ package(:bundle).tap do |bnd|
97
+ bnd.classpath [ project.compile.target,
98
+ 'someOtherExistingFile.zip',
99
+ artifact('com.sun.messaging.mq:imq:jar:4.4'),
100
+ project('bar'),
101
+ 'org.apache.ant:ant:jar:1.8.0',
102
+ file('myLocalFile.jar') ]
103
+ ...
104
+ end
105
+
106
+ project 'bar' do
107
+ ...
108
+ end
109
+ end
110
+
111
+
112
+ == Examples
113
+
114
+ === Including non-class resources in a bundle
115
+
116
+ Bnd can be used to include non-class resources in a bundle. The following
117
+ example includes all resources in 'src/etc' into the bundle.
118
+
119
+ require 'buildr_bnd'
120
+
121
+ desc 'Including resources example'
122
+ define 'myproject' do
123
+ ...
124
+ package(:bundle).tap do |bnd|
125
+ bnd['Include-Resource'] = project._('src/etc') + '/'
126
+ ...
127
+ end
128
+ end
129
+
130
+ === Using bnd to wrap an existing jar
131
+
132
+ Bnd can be used to wrap an existing jar as an OSGi bundle. The following
133
+ example wraps the OpenMQ JMS provider as an OSGi bundle.
134
+
135
+ require 'buildr_bnd'
136
+
137
+ # Add repository for OpenMQ
138
+ repositories.remote << 'http://download.java.net/maven/2'
139
+
140
+ desc 'OSGi bundle for OpenMQ JMS provider client library'
141
+ define 'com.sun.messaging.mq.imq' do
142
+ project.version = '4.4'
143
+ project.group = 'iris'
144
+ package(:bundle).tap do |bnd|
145
+ bnd['Import-Package'] = "*;resolution:=optional"
146
+ bnd['Export-Package'] = "com.sun.messaging.*;version=#{version}"
147
+ bnd.classpath_element 'com.sun.messaging.mq:imq:jar:4.4'
148
+ end
149
+ end
150
+
151
+ === Create an OSGi bundle with an Activator
152
+
153
+ The following example presents a basic buildfile for building an OSGi bundle with
154
+ an activator.
155
+
156
+ require 'buildr_bnd'
157
+
158
+ # repository for OSGi core bundle
159
+ repositories.remote << 'https://repository.apache.org/content/repositories/releases'
160
+
161
+ desc 'Hello World bundle'
162
+ define 'helloworld' do
163
+ project.version = '1.0'
164
+ project.group = 'org.example'
165
+ compile.with 'org.apache.felix:org.osgi.core:jar:1.4.0'
166
+ package(:bundle).tap do |bnd|
167
+ bnd['Export-Package'] = "org.example.helloworld.api.*;version=#{version}"
168
+ bnd['Bundle-Activator'] = "org.example.helloworld.Activator"
169
+ end
170
+ end
171
+
172
+ === Inheriting parameters for bnd tool
173
+
174
+ The following example shows how you can use 'manifest' to define a bnd parameter that is inherited
175
+ to all child subprojects. The "Bundle-License" defined in the top level project is passed to the bnd
176
+ tool when generating both the 'fe' and 'fi' subprojects but the 'fo' subproject overrides this
177
+ parameter withy a local value.
178
+
179
+ require 'buildr_bnd'
180
+
181
+ define 'myproject' do
182
+ manifest['Bundle-License'] = "http://www.apache.org/licenses/LICENSE-2.0"
183
+ ...
184
+ define 'fe' do
185
+ ...
186
+ package(:bundle).tap do |bnd|
187
+ ...
188
+ end
189
+ end
190
+
191
+ define 'fi' do
192
+ ...
193
+ package(:bundle).tap do |bnd|
194
+ ...
195
+ end
196
+ end
197
+
198
+ define 'fo' do
199
+ ...
200
+ package(:bundle).tap do |bnd|
201
+ bnd['Bundle-License'] = "http://www.apache.org/licenses/LICENSE-1.1"
202
+ end
203
+ end
204
+ end
205
+
206
+ == Future Work
207
+
208
+ The following is a list of feature requests for future versions of the extension. Feel free to
209
+ jump in and supply a patch if you have gone ahead and implemented the feature.
210
+
211
+ === Support Embed-Dependency equivalent
212
+
213
+ The maven-bundle-plugin supports Embed-Dependency which can include a jar inside the bundle,
214
+ add manifest directives to include it in the export calculations. One "Embed-Dependency"
215
+ directive may turn into something like
216
+
217
+ -classpath=com.ibm.mq.jar
218
+ Include-Resource=com.ibm.mq.jar
219
+ Bundle-Classpath=.,com.ibm.mq.jar
220
+ Private-Package=!*
221
+ -exportcontents: com.ibm.mq.*
222
+
223
+ For further discussion on this see;
224
+ * http://www.mail-archive.com/users@felix.apache.org/msg06625.html
225
+ * http://www.mail-archive.com/users@felix.apache.org/msg06626.html
226
+
227
+ == Credit
228
+
229
+ The plugin was heavily inspired by the bnd tasks originally authored by Rhett Sutphin. It began
230
+ life as a fork but has been rewritten from scratch to use a different approach.