1 # Adding components to the set of manually built third-party dependencies
\r
3 The simantics/platform.git repository contains a Maven project releng/org.simantics.sdk.build.p2.site/ which defines a set of libraries that are built into bundles and from there into a P2 repository completely based on standard Maven repository contents.
\r
5 Not all bundles can be taken from Maven though, without considerable effort. Sometimes it is just easier to bundle the libraries into OSGi bundles manually and join them into a P2 repository.
\r
7 This repository contains two folders: plugins and features.
\r
9 If you want to manually bundle an external third-party library into the Simantics target platform, add any plug-in/fragment bundles related to into the *plugins* folder.
\r
11 If your bundled library has dependencies to other bundles, you should probably create a feature project in the *features* directory that includes the plug-in(s) required by those plug-ins.
\r
13 When building, it is recommended to use a separate otherwise empty workspace and the target definition file */externals.target*. After you've created the necessary plugins and features, use the Eclipse PDE IDE plug-in/feature export wizards to produce the required P2 repository content under /p2/{features,plugins}.
\r
15 The *publish.sh* script at the root of the repository will be ran automatically by the Simantics platform Jenkins job [SDK/manual-third-party-components](https://www.simantics.org/jenkins/job/SDK/job/manual-third-party-components/). It will create the required P2 repository content and artifact metadata files under the *p2/* directory based on the contents of directories *p2/{features,plugins}*.
\r
17 To summarize, what ever you put into the **p2** directory will be published by Jenkins as a P2 repository at `http://www.simantics.org/download/<PUBLISHED_BRANCH_NAME>/external-components/manual`, i.e. for master branch the URL will be [http://www.simantics.org/download/master/external-components/manual](http://www.simantics.org/download/master/external-components/manual). To have the [SDK/manual-third-party-components](https://www.simantics.org/jenkins/job/SDK/job/manual-third-party-components/) Jenkins job publish the p2 repository online, you must run the build with the parameter `PUBLISHED_BRANCH_NAME` set to the name of an existing simantics platform branch.