# TIPS

**URL:** https://bnd.discourse.group/c/tips/10.md?page=1

[Latest](https://bnd.discourse.group/latest.md) · [Categories](https://bnd.discourse.group/categories.md)

**Page:** 2

---

## [Upload to maven central with individually versioned bundles](https://bnd.discourse.group/t/upload-to-maven-central-with-individually-versioned-bundles/142)

<div class="topic-metadata">

**Author:** [@juergen-albert](https://bnd.discourse.group/u/juergen-albert)\
**Replies:** 0\
**Last updated:** [July 15, 2021, 2:12pm UTC](https://bnd.discourse.group/t/upload-to-maven-central-with-individually-versioned-bundles/142 "2021-07-15T14:12:06Z")

</div>

Hi, We recently started uploading our bundles to maven central. To do that a trusted staging repository is needed (in our case sonatype). They perform certain checks, to make sure your artifacts meet the standards (like…

---

## [Rapid test-driven development with continuous testing](https://bnd.discourse.group/t/rapid-test-driven-development-with-continuous-testing/90)

<div class="topic-metadata">

**Author:** [@kriegfrj](https://bnd.discourse.group/u/kriegfrj)\
**Replies:** 3\
**Last updated:** [June 24, 2021, 6:53am UTC](https://bnd.discourse.group/t/rapid-test-driven-development-with-continuous-testing/90 "2021-06-24T06:53:00Z")

</div>

Executive summary This is a quick “tip” post about the continuous testing feature of Bnd(tools), which can help in this area by significantly speeding up the test-develop cycle for integration tests in OSGi systems. For…

---

## [Using Git worktrees](https://bnd.discourse.group/t/using-git-worktrees/79)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 2\
**Last updated:** [March 29, 2021, 6:55am UTC](https://bnd.discourse.group/t/using-git-worktrees/79 "2021-03-29T06:55:03Z")

</div>

Switching between git branches can be cumbersome. They usually require a full build and there are lots of things that can go wrong. The past 10 years I regularly have 10 workspaces open at the same time, but they were on…

---

## [More TDD: Facade pattern to streamline Eclipse extension development](https://bnd.discourse.group/t/more-tdd-facade-pattern-to-streamline-eclipse-extension-development/99)

<div class="topic-metadata">

**Author:** [@kriegfrj](https://bnd.discourse.group/u/kriegfrj)\
**Replies:** 2\
**Last updated:** [March 4, 2021, 11:43pm UTC](https://bnd.discourse.group/t/more-tdd-facade-pattern-to-streamline-eclipse-extension-development/99 "2021-03-04T23:43:13Z")

</div>

In the previous tip that I wrote, I extolled the benefits of rapid test-driven development using the continuous testing feature of Bndtools. This is a short follow-up post with a technique I developed to leverage this wh…

---

## [The API Project](https://bnd.discourse.group/t/the-api-project/73)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 2\
**Last updated:** [February 6, 2021, 10:56am UTC](https://bnd.discourse.group/t/the-api-project/73 "2021-02-06T10:56:23Z")

</div>

If I have to pick on idea that worked best over the past years then it is probably the API project. Basically since the original OSGi enRoute, I make sure all my bnd work spaces have one (1!) project that contains the AP…

---

## [The ext directory in cnf](https://bnd.discourse.group/t/the-ext-directory-in-cnf/72)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [January 12, 2021, 11:35am UTC](https://bnd.discourse.group/t/the-ext-directory-in-cnf/72 "2021-01-12T11:35:09Z")

</div>

The cnf directory in a bnd workspace contains the shared information for all projects in the workspace. It is the home of the bnd workspace. The build.bnd file in this directory contains the shared setup like for example…

---

## [When bnd doesn't understand your dependencies](https://bnd.discourse.group/t/when-bnd-doesnt-understand-your-dependencies/68)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [January 8, 2021, 9:08am UTC](https://bnd.discourse.group/t/when-bnd-doesnt-understand-your-dependencies/68 "2021-01-08T09:08:29Z")

</div>

In most cases, bnd is an understanding and committed abstract model. I find that most bnd users just assume they can depend on bnd. And for normal projects, this is justified since it looks at the -buildpath and -testpat…

---

## [Macros and lists](https://bnd.discourse.group/t/macros-and-lists/65)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [January 6, 2021, 8:14am UTC](https://bnd.discourse.group/t/macros-and-lists/65 "2021-01-06T08:14:54Z")

</div>

The bnd macro language has a native format for lists. A bnd list is a string with comma separated values. For example, a,b,c is a list with 3 members. Many macros can provide lists of internal information and many macros…

---

## [Finding closure in your Imports](https://bnd.discourse.group/t/finding-closure-in-your-imports/62)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [December 24, 2020, 11:12am UTC](https://bnd.discourse.group/t/finding-closure-in-your-imports/62 "2020-12-24T11:12:14Z")

</div>

I really dislike bundles that have a myriad of implementation dependencies. Dependencies that are only used by one bundle and pollute the public package space in OSGi. A perfect bundle depends on services specified in a …

---

## [Wrapping JARs in Bntools](https://bnd.discourse.group/t/wrapping-jars-in-bntools/61)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 1\
**Last updated:** [December 24, 2020, 8:28am UTC](https://bnd.discourse.group/t/wrapping-jars-in-bntools/61 "2020-12-24T08:28:05Z")

</div>

In my previous post I showed how to use a non-OSGi JAR. A question was what the purpose of this? In OSGi you can wrap bundles very easily by including the whole bundle in one fell swoop. -includeresource \\ @${re…

---

## [When it is not a bundle?](https://bnd.discourse.group/t/when-it-is-not-a-bundle/59)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 2\
**Last updated:** [December 23, 2020, 11:22am UTC](https://bnd.discourse.group/t/when-it-is-not-a-bundle/59 "2020-12-23T11:22:26Z")

</div>

Although Maven Central now provides the majority of bundles with OSGi metadata, there are still a lot of JARs out there without. Although these JARs are not useful in an OSGi framework, they can be used as first class ci…

---

## [Filtering in Bndtools Explorer](https://bnd.discourse.group/t/filtering-in-bndtools-explorer/57)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [December 18, 2020, 7:58am UTC](https://bnd.discourse.group/t/filtering-in-bndtools-explorer/57 "2020-12-18T07:58:45Z")

</div>

One of the primary frustrations I had with the further awesome Package Explorer was the lack of filtering. So a few releases ago I added the Bndtools Explorer with a filter box. For example, if you want to see all tes…

---

## [Macros as functions](https://bnd.discourse.group/t/macros-as-functions/50)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 2\
**Last updated:** [December 16, 2020, 4:06pm UTC](https://bnd.discourse.group/t/macros-as-functions/50 "2020-12-16T16:06:59Z")

</div>

It is hard to think there are bnd users that never used a macro. After all, every property in a bnd file can be used as a macro, including all the instructions. For example, you can use a very foundational instruction as…

---

## [Use of the ${template} macro](https://bnd.discourse.group/t/use-of-the-template-macro/54)

<div class="topic-metadata">

**Author:** [@pkriens](https://bnd.discourse.group/u/pkriens)\
**Replies:** 0\
**Last updated:** [December 16, 2020, 8:42am UTC](https://bnd.discourse.group/t/use-of-the-template-macro/54 "2020-12-16T08:42:49Z")

</div>

The bnd instructions (any property that starts with a - sign) are using the same syntax as the OSGi headers for structured information. The syntax is basically: header ::= (clause (',' clause )+)? clause ::= key…

[Previous page](https://bnd.discourse.group/c/tips/10.md)
