At this stage there’s two approach:
- If you only need to work on the core libraries, then you only need those, and they can be imported as a maven project with some configuration
- If you need the full blown JMC, then you need the other import approach, that is a mix of
.project
-.classpath
and Maven projects.
File | Open…
, then select thecore
folder in the JMC cloned repository,- Trust the project (also tick the
Trust projects in <JMC clone path>
as well) - open as a Maven project
- Configure the JDK, go to the project structure, select a JDK 11, but make sure the language level is set to 8.
- In the general preferences:
- Go to
Preferences | Build, Execution, Deployment | Build Tools | Maven
, toggle onAlways update snaphosts
, make sure theJDK for importer
is is set to the same JDK 11. Go toNot necessary after openjdk/jmc#354Preferences | Build, Execution, Deployment | Build Tools | Maven | Runner
, tick theDelegate IDE/ build/run actions to Maven
, make sure theJDK
(for the runner) is is set to the same JDK 11, tickSkip Tests
.Preferences | Build, Execution, Deployment | Build Tools | Maven | Running Tests
, untickargLine
Related to IDEA-145991, otherwise you’ll get this error isError: Could not find or load main class @{surefireArgLine}
- Go to
This will load the core JMC libraries (the ones that are used to parse and analyze JFR files) in IntelliJ. From this point you should be able to build.
java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
Note the core libraries test-jars follows the easy way not the preferred way as documented on the jar plugin. Done in openjdk/jmc#354
You need to have opened the jmc project first in Eclipse and resolve the p2 depdencies using the worspace $HOME/jmc-workspace
, because the project is setup to find the necessary dependencies in the worspace metadata.
curl -s https://github.com/bric3/jmc/commit/0814c976a77a9ee16c28315d189b64dc9f9688ae.patch | git apply -v
However running (and debugging) is not yet supported.
Remaining things to do
- Find a way to run/debug
- * [ ] Configure Use the Eclipse formatter, or maybe spotless formatter instead.
- Find a way to handle Eclipse upgrade (ie. to regenerate Eclipse dependencies)
First the project has to be opened in Eclipse at least once.
Open the project structure, before importing (i.e. on the Welcome to IntelliJ IDEA dialog), go to File | Project Structure
Add or Rename JDK, with to following
- JavaSE-11
- JavaSE-1.8
Once you applied the patch, there's a .idea
folder. If the patch failed, you may need to remove all .iml
and .idea
folder, and apply the path again.
So you just need to open the jmc/
folder via File | Open....
If IntelliJ IDEA asks you to choose between Maven and Eclipse, either you opened a file, or something went wrong with the patching, please clean and retry the patch.
TIP: In the project view, toggle the appearance to flatten modules
File | New | Module from Existing Sources…
, then select the JMC clone folder, clickOpen
.- Select
Import module from external model
, chooseEclipse
, clickNext
- Select
Create module files near .classpath files
, tickLink created IntelliJ modules to Eclipse project files
, clickNext
- Select all projects under
application/
, and theorg.openjdk.jmc.agent (agent)
, core project should already be opened. ClickNext
Some dependencies declared in the .classpath
have to be declared manually in IntelliJ, e.g. the Eclipse PDE / RCP dependencies. Which are represented as the ECLIPSE
library. There is also the JDK_JMC
library which is like the extra JDK 8 libraries.
In DefaultValueMap.java#L65 there’s a cast that IntelliJ don’t quite like:
@SuppressWarnings("unchecked")
public DefaultValueMap(IMapper<K, IOptionDescriptor<?>> fallbacks) {
// NOTE: Cast is just to circumvent issue in Eclipse 4.5.2 with JDK 7 compiler/libs.
- this((Map<K, ? extends IOptionDescriptor<?>>) Collections.emptyMap(), fallbacks);
+ this(Collections.emptyMap(), fallbacks);
}
public DefaultValueMap(Map<K, ? extends IOptionDescriptor<?>> knownOptions,
IMapper<K, IOptionDescriptor<?>> fallbacks) {
Create a Library named JMC_JDK
, then add the following libraries
* jdk8/jre/lib/ext/jfxrt.jar
* jdk8/jre/lib/jfxswt.jar
* jdk8/lib/tools.jar
* jdk8/lib/jconsole.jar
These dependencies are normally declared as OSGI dependencies (Eclipse plugins), if you opened the JMC project in Eclipse before, in the chosen workspace (say it’s ~/jmc-worspace
) you’ll see PDE dependencies in the following path.
~/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/
For projects, found the following Plug-in dependencies, e.g. for org.openjdk.jmc.pde
, org.openjdk.jmc.ui
, org.openjdk.jmc.flighrecorder.pde
, org.openjdk.jmc.ide.ui
-
org.eclipse.ui_3.119.0.v20210111-1350.jar
-
org.eclipse.swt_3.116.100.v20210602-2209.jar
-
org.eclipse.swt.cocoa.macosx.x86_64_3.116.100.v20210602-2209.jar
-
org.eclipse.jface_3.22.200.v20210401-0958.jar
-
org.eclipse.core.commands_3.10.0.v20210401-0744.jar
-
org.eclipse.ui.workbench_3.122.200.v20210506-1640.jar
-
org.eclipse.e4.ui.workbench3_0.15.500.v20201021-1339.jar
-
org.eclipse.ui.forms_3.11.100.v20210108-1139.jar
-
org.eclipse.ui.views_3.11.0.v20210111-1351.jar
-
org.eclipse.core.runtime_3.22.0.v20210506-1025.jar
-
org.eclipse.osgi_3.16.300.v20210525-1715.jar
-
org.eclipse.osgi.compatibility.state_1.2.400.v20210401-1438.jar
-
org.eclipse.equinox.common_3.15.0.v20210518-0604.jar
-
org.eclipse.core.jobs_3.11.0.v20210420-1453.jar
-
org.eclipse.equinox.registry_3.10.200.v20210503-1606.jar
-
org.eclipse.equinox.preferences_3.8.200.v20210212-1143.jar
-
org.eclipse.core.contenttype_3.7.1000.v20210409-1722.jar
-
org.eclipse.equinox.app_1.5.100.v20210212-1143.jar
-
org.eclipse.pde.core_3.14.300.v20210515-0638.jar
-
org.eclipse.e4.ui.ide_3.15.200.v20210108-1832.jar
-
org.eclipse.core.resources_3.15.0.v20210521-0722.jar
-
org.eclipse.pde.ui_3.13.100.v20210515-0638.jar
-
org.eclipse.pde.core_3.14.300.v20210515-0638.jar
-
org.eclipse.pde.launching_3.9.300.v20210513-1344.jar
-
org.eclipse.core.expressions_3.7.100.v20210203-1000.jar
-
org.eclipse.ui.ide_3.18.200.v20210523-1724.jar
-
org.eclipse.e4.core.contexts_1.8.400.v20191217-1710.jar
-
org.eclipse.e4.core.di_1.7.800.v20210526-1618.jar
-
org.eclipse.help_3.9.0.v20210507-0822.jar
-
org.eclipse.equinox.p2.ui_2.7.100.v20210426-1115.jar
-
org.eclipse.equinox.p2.core_2.7.0.v20210315-2042.jar
-
org.eclipse.equinox.p2.operations_2.6.0.v20210315-2228.jar
-
org.eclipse.equinox.p2.repository_2.5.100.v20210329-1206.jar
-
org.eclipse.equinox.p2.metadata_2.6.0.v20210331-1610.jar
-
org.eclipse.ui.intro_3.6.200.v20210409-1747.jar
-
…
-
com.sun.mail.jakarta.mail_2.0.1.jar
<= fororg.openjdk.jmc.rjmx
-
javax.inject_1.0.0.v20091030.jar
Note some modules have dependencies that only makes sense in the Eclipse JDT, eg org.openjdk.jmc.ide.jdt
org.eclipse.jface.text_3.18.0.v20210512-1640.jar
org.eclipse.ui.workbench.texteditor_3.16.100.v20210512-1009.jar
org.eclipse.jdt.core_3.26.0.v20210609-0549.jar
org.eclipse.jdt.ui_3.23.0.v20210530-1810.jar
This can be configured as a global library or as a project library
If this is an application wide library (Global Library), then it will be located here : Library/Application\ Support/JetBrains/IntelliJIdea2021.3/options/applicationLibraries.xml
.
<application>
<component name="libraryTable">
<library name="adoptopenjdk.jemmy.swt" type="repository">
<properties maven-id="org.adoptopenjdk:jemmy-swt:2.0.0" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-swt/2.0.0/jemmy-swt-2.0.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/swt/org.eclipse.swt.cocoa.macosx.x86_64/4.3/org.eclipse.swt.cocoa.macosx.x86_64-4.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-core/2.0.0/jemmy-core-2.0.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-browser/2.0.0/jemmy-browser-2.0.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-awt-input/2.0.0/jemmy-awt-input-2.0.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-swt/2.0.0/jemmy-swt-2.0.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/eclipse/swt/org.eclipse.swt.cocoa.macosx.x86_64/4.3/org.eclipse.swt.cocoa.macosx.x86_64-4.3-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-core/2.0.0/jemmy-core-2.0.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-browser/2.0.0/jemmy-browser-2.0.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/adoptopenjdk/jemmy-awt-input/2.0.0/jemmy-awt-input-2.0.0-sources.jar!/" />
</SOURCES>
</library>
<library name="ECLIPSE">
<CLASSES>
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui_3.119.0.v20210111-1350.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.commands_3.10.0.v20210401-0744.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.contenttype_3.7.1000.v20210409-1722.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.jobs_3.11.0.v20210420-1453.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.runtime_3.22.0.v20210506-1025.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jface_3.22.200.v20210401-0958.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.116.100.v20210602-2209.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.forms_3.11.100.v20210108-1139.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.views_3.11.0.v20210111-1351.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.workbench_3.122.200.v20210506-1640.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.ui.workbench_1.13.0.v20210521-0741.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.app_1.5.100.v20210212-1143.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.common_3.15.0.v20210518-0604.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.preferences_3.8.200.v20210212-1143.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.registry_3.10.200.v20210503-1606.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.osgi_3.16.300.v20210525-1715.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.osgi.compatibility.state_1.2.400.v20210401-1438.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.core_3.14.300.v20210515-0638.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.ui.ide_3.15.200.v20210108-1832.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.resources_3.15.0.v20210521-0722.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.launching_3.9.300.v20210513-1344.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.ui_3.13.100.v20210515-0638.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.expressions_3.7.100.v20210203-1000.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.ide_3.18.200.v20210523-1724.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.core_3.26.0.v20210609-0549.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.workbench.texteditor_3.16.100.v20210512-1009.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.ui_3.23.0.v20210530-1810.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.text_3.12.0.v20210512-1644.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/com.sun.mail.jakarta.mail_2.0.1.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.net_1.3.1100.v20210424-0724.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/javax.inject_1.0.0.v20091030.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.core.contexts_1.8.400.v20191217-1710.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.core.di_1.7.800.v20210526-1618.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.help_3.9.0.v20210507-0822.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.ui_2.7.100.v20210426-1115.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.core_2.7.0.v20210315-2042.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.repository_2.5.100.v20210329-1206.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.operations_2.6.0.v20210315-2228.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.metadata_2.6.0.v20210331-1610.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.intro_3.6.200.v20210409-1747.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.server_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.servlet_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.websocket.api_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.websocket.server_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.websocket.servlet_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.http_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.io_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.util_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/jakarta.servlet-api_4.0.0.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jface.text_3.18.0.v20210512-1640.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.debug.core_3.18.100.v20210511-0446.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.debug.ui_3.15.0.v20210525-1810.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.junit_3.12.0.v20210521-1840.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.launching_3.19.200.v20210326-1452.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.editors_3.14.100.v20210513-1110.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.junit.core_3.10.1100.v20210429-2046.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.debug.ui_3.12.300.v20210517-0748.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.commands.source_3.10.0.v20210401-0744.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.contenttype.source_3.7.1000.v20210409-1722.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.jobs.source_3.11.0.v20210420-1453.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.runtime.source_3.22.0.v20210506-1025.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jface.source_3.22.200.v20210401-0958.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.swt.cocoa.macosx.x86_64.source_3.116.100.v20210602-2209.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.forms.source_3.11.100.v20210108-1139.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.source_3.119.0.v20210111-1350.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.views.source_3.11.0.v20210111-1351.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.workbench.source_3.122.200.v20210506-1640.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.ui.workbench.source_1.13.0.v20210521-0741.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.app.source_1.5.100.v20210212-1143.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.common.source_3.15.0.v20210518-0604.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.preferences.source_3.8.200.v20210212-1143.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.registry.source_3.10.200.v20210503-1606.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.osgi.compatibility.state.source_1.2.400.v20210401-1438.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.osgi.source_3.16.300.v20210525-1715.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.core.source_3.14.300.v20210515-0638.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.ui.ide.source_3.15.200.v20210108-1832.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.resources.source_3.15.0.v20210521-0722.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.launching.source_3.9.300.v20210513-1344.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.ui.source_3.13.100.v20210515-0638.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.expressions.source_3.7.100.v20210203-1000.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.ide.source_3.18.200.v20210523-1724.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.core.source_3.26.0.v20210609-0549.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.workbench.texteditor.source_3.16.100.v20210512-1009.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.ui.source_3.23.0.v20210530-1810.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.ui_3.23.0.v20210530-1810.jar!/preview" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.text.source_3.12.0.v20210512-1644.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.core.net.source_1.3.1100.v20210424-0724.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/javax.inject.source_1.0.0.v20091030.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.core.contexts.source_1.8.400.v20191217-1710.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.e4.core.di.source_1.7.800.v20210526-1618.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.help.source_3.9.0.v20210507-0822.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.ui.source_2.7.100.v20210426-1115.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.core.source_2.7.0.v20210315-2042.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.repository.source_2.5.100.v20210329-1206.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.operations.source_2.6.0.v20210315-2228.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.p2.metadata.source_2.6.0.v20210331-1610.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.intro.source_3.6.200.v20210409-1747.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.server.source_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.servlet.source_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.http.source_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.io.source_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jetty.util.source_10.0.5.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/jakarta.servlet-api.source_4.0.0.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jface.text.source_3.18.0.v20210512-1640.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.debug.core.source_3.18.100.v20210511-0446.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.debug.ui.source_3.15.0.v20210525-1810.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.junit.core.source_3.10.1100.v20210429-2046.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.launching.source_3.19.200.v20210326-1452.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.ui.editors.source_3.14.100.v20210513-1110.jar!/" />
<root url="jar://$USER_HOME$/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.debug.ui.source_3.12.300.v20210517-0748.jar!/" />
</SOURCES>
</library>
<library name="JMC_JDK">
<CLASSES>
<root url="jar://$USER_HOME$/.asdf/installs/java/corretto-8.312.07.1/lib/jconsole.jar!/" />
<root url="jar://$USER_HOME$/.asdf/installs/java/corretto-8.312.07.1/lib/tools.jar!/" />
<root url="jar://$USER_HOME$/.asdf/installs/java/corretto-8.312.07.1/jre/lib/ext/jfxrt.jar!/" />
<root url="jar://$USER_HOME$/.asdf/installs/java/corretto-8.312.07.1/jre/lib/jfxswt.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.asdf/installs/java/corretto-8.312.07.1/lib/tools.jar!/" />
</SOURCES>
</library>
</component>
</application>
During this long process I found that using the Eclipse compiler worked better than javac
, however once done javac
is ok as well. This is configurable in Preferences | Build, Execution, Deployment | Compiler | Java Compiler
This file may require the Eclipse Compiler FilterEditor.java#L440-L441
ViewerDropAdapter dropTarget = DndToolkit.createLocalDropListTarget(tree, CompositeNode.class, FilterNode.class, this::performDrop, this::validateDrop);
The javac
compiler error is
java: incompatible types: invalid method reference incompatible types: java.util.List<capture#1 of ? extends U> cannot be converted to java.util.List<? extends org.openjdk.jmc.flightrecorder.ui.common.FilterEditor.FilterNode>
Manually resolve the JUnit dependency in test projects
Manually link dependent project, eg from joverflow.tests
to joverflow
From org.opemjdk.jmc.joverflow
(imported as Eclipse project) to org.openjdk.jmc.common
(imported as a core Maven project)
Some application projects may fail to compile
java: cannot access org.eclipse.pde.ui.IFieldData bad class file: /Users/brice.dutheil/jmc-workspace/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.pde.ui_3.13.100.v20210515-0638.jar!/org/eclipse/pde/ui/IFieldData.class class file has wrong version 55.0, should be 52.0 Please remove or make sure it appears in the correct subdirectory of the classpath.
Just change their JDK to JavaSE-11 (do not do this on core libraries).
Sometimes during compilation an error about accessing is appears
java: cannot access org.openjdk.jmc.ui.common.resource.IImageResource class file for org.openjdk.jmc.ui.common.resource.IImageResource not found
This happens because some packages are not exported, at this time, I am choosing to import those explicitly. By adding a Module dependency, in this case org.openjdk.jmc.ui.common
For this one, add the common
module (it’s the one from core)
java: cannot access org.openjdk.jmc.common.IDescribable class file for org.openjdk.jmc.common.IDescribable not found
For this one, add the common.test
module (from the core)
java: cannot access org.openjdk.jmc.common.test.MCTestCase class file for org.openjdk.jmc.common.test.MCTestCase not found
For this one, it’s more tricky, it needs to add the org.eclipse.e4.core.di_1.7.800.v20210526-1618.jar
dependency to the ECLIPSE
global dependency
java: cannot access org.eclipse.e4.core.di.InjectionException class file for org.eclipse.e4.core.di.InjectionException not found
For /agent project, right click on pom.xml
, and select Add as maven Project (bottom of the menu), it should resolve ASM dependencies
For /application/uitests/org.openjdk.jmc.test.jemmy
Go to Project structure | Global Libraries, click ➕ (New Global Library), select From Maven.
Enter org.adoptopenjdk:jemmy-swt:2.0.0
, optionally tick Sources.
Suppose this global library is named adoptopenjdk.jemmy.swt
.
Then navigate to Project Settings | Modules, select org.openjdk.jmc.test.jemmy
, then to the Dependencies tab, then click ➕ (Add) to add the global library, select Library…. In the popup dialog, scroll down to Global Libraries, then select adoptopenjdk.jemmy.swt
and validate.
The notes below represent an active research on the dependencies resolution for JMC.
platform-definition-2021-06.target
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Copyright -->
<?pde version="3.8"?>
<target name="jmc-target-2021-06" sequenceNumber="47">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="com.sun.mail.jakarta.mail" version="2.0.1"/>
<unit id="com.sun.activation.jakarta.activation" version="2.0.1"/>
<unit id="org.owasp.encoder" version="1.2.3"/>
<unit id="org.lz4.lz4-java" version="1.8.0"/>
<unit id="org.hdrhistogram.HdrHistogram" version="2.1.12"/>
<unit id="org.adoptopenjdk.jemmy-awt-input" version="2.0.0"/>
<unit id="org.adoptopenjdk.jemmy-browser" version="2.0.0"/>
<unit id="org.adoptopenjdk.jemmy-core" version="2.0.0"/>
<unit id="org.adoptopenjdk.jemmy-swt" version="2.0.0"/>
<unit id="org.eclipse.jetty.servlet-api" version="4.0.6"/>
<unit id="org.eclipse.jetty.websocket.api" version="10.0.5"/>
<unit id="org.eclipse.jetty.websocket.server" version="10.0.5"/>
<unit id="org.eclipse.jetty.websocket.servlet" version="10.0.5"/>
<unit id="org.eclipse.jetty.websocket.javax.server" version="10.0.5"/>
<unit id="org.apache.aries.spifly.dynamic.bundle" version="1.3.4"/>
<repository location="http://localhost:8080/site"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.equinox.executable.feature.group" version="3.8.1200.v20210527-0259"/>
<unit id="org.eclipse.pde.feature.group" version="3.14.800.v20210611-1636"/>
<unit id="org.eclipse.platform.sdk" version="4.20.0.I20210611-1600"/>
<repository location="http://download.eclipse.org/releases/2021-06/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.babel.nls_eclipse_ja.feature.group" version="4.20.0.v20210630020001"/>
<unit id="org.eclipse.babel.nls_eclipse_zh.feature.group" version="4.20.0.v20210630020001"/>
<repository location="https://archive.eclipse.org/technology/babel/update-site/R0.19.0/2021-06/"/>
</location>
</locations>
<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
</target>
The repository has to be a p2 repository.
This is declared in the maven project org.openjdk.jmc:platform-definition-2021-06
, and used in the default profile of the root pom.xml
:
<profile>
<id>2021-06</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
<target>
<artifact>
<groupId>org.openjdk.jmc</groupId>
<artifactId>platform-definition-2021-06</artifactId>
<version>${revision}${changelist}</version>
</artifact>
</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
For dependencies listed on maven central, the project requires a local jetty server, that serves an artificial p2 site that map the maven coordinate eventually patching OSGI meta-data, the definition is here : third-party/pom.xml
:
<plugin>
<groupId>org.reficio</groupId>
<artifactId>p2-maven-plugin</artifactId>
<version>${p2-maven-plugin.version}</version>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<additionalArgs>-nouses</additionalArgs>
<pedantic>true</pedantic>
<artifacts>
<!-- specify third party non-OSGi dependencies here -->
<!-- groupId:artifactId:version -->
<artifact>
<id>com.sun.mail:jakarta.mail:${jakarta.mail.version}</id>
<override>true</override>
<instructions>
<Import-Package>*;resolution:=optional</Import-Package>
<Export-Package>*</Export-Package>
</instructions>
</artifact>
<artifact>
<id>com.sun.activation:jakarta.activation:${jakarta.activation.version}</id>
</artifact>
<artifact>
<id>org.owasp.encoder:encoder:${owasp.encoder.version}</id>
</artifact>
<artifact>
<id>org.lz4:lz4-java:${lz4.version}</id>
<override>true</override>
<instructions>
<Bundle-Name>org.lz4.lz4-java</Bundle-Name>
<Bundle-SymbolicName>org.lz4.lz4-java</Bundle-SymbolicName>
</instructions>
</artifact>
<artifact>
<id>org.hdrhistogram:HdrHistogram:${hdrhistogram.version}</id>
</artifact>
<artifact>
<id>org.adoptopenjdk:jemmy-awt-input:${jemmy.version}</id>
</artifact>
<artifact>
<id>org.adoptopenjdk:jemmy-browser:${jemmy.version}</id>
</artifact>
<artifact>
<id>org.adoptopenjdk:jemmy-core:${jemmy.version}</id>
</artifact>
<artifact>
<id>org.adoptopenjdk:jemmy-swt:${jemmy.version}</id>
</artifact>
<artifact>
<id>org.eclipse.jetty.websocket:websocket-jetty-server:${jetty.version}</id>
</artifact>
<artifact>
<id>org.eclipse.jetty.websocket:websocket-javax-server:${jetty.version}</id>
</artifact>
<artifact>
<id>org.eclipse.jetty.websocket:websocket-jetty-api:${jetty.version}</id>
</artifact>
<artifact>
<id>org.apache.aries.spifly:org.apache.aries.spifly.dynamic.bundle:${spifly.version}</id>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
Layout served by jetty
http://localhost:8080/site
├── artifacts.jar
├── category.xml
├── content.jar
└── plugins
├── com.sun.activation.jakarta.activation_1.2.1.jar
├── com.sun.mail.jakarta.mail_1.6.5.jar
├── org.adoptopenjdk.jemmy-awt-input_2.0.0.jar
├── org.adoptopenjdk.jemmy-browser_2.0.0.jar
├── org.adoptopenjdk.jemmy-core_2.0.0.jar
├── org.adoptopenjdk.jemmy-swt_2.0.0.jar
├── org.eclipse.swt.cocoa.macosx.x86_64_4.3.0.jar
├── org.hdrhistogram.HdrHistogram_2.1.12.jar
├── org.lz4.lz4-java_1.7.1.jar
├── org.owasp.encoder_1.2.2.jar
└── org.twitter4j.core_4.0.7.jar
Ideas 💡
- Extend the Eclipse PDE partial plugin to support
.target
files, at least the one from JMC - Download the jars from the
.target
in a specific folder, possibly….- Using P2 director command line tool
- Download manually the RCP Runtime from 4.22 - Eclipse Project Downloads
- Still exploring....
releases/2021-06 software repository
https://download.eclipse.org/releases/2021-06/
├── p2.index
├── compositeContent.jar
├── compositeArtifacts.jar
└── 202106161001/
├── binary/
│ ├── ...
│ ├── org.eclipse.equinox.executable_root.cocoa.macosx.aarch64_3.8.1200.v20210527-0259
│ ├── org.eclipse.equinox.executable_root.cocoa.macosx.x86_64_3.8.1200.v20210527-0259
│ ├── org.eclipse.equinox.executable_root.gtk.linux.aarch64_3.8.1200.v20210527-0259
│ ├── org.eclipse.equinox.executable_root.gtk.linux.ppc64le_3.8.1200.v20210527-0259
│ ├── org.eclipse.equinox.executable_root.gtk.linux.x86_64_3.8.1200.v20210527-0259
│ ├── org.eclipse.equinox.executable_root.win32.win32.x86_64_3.8.1200.v20210527-0259
│ ├── org.eclipse.platform.ide.executable.cocoa.macosx.aarch64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.ide.executable.cocoa.macosx.x86_64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.ide.executable.gtk.linux.aarch64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.ide.executable.gtk.linux.ppc64le_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.ide.executable.gtk.linux.x86_64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.ide.executable.win32.win32.x86_64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.cocoa.macosx.aarch64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.cocoa.macosx.x86_64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.gtk.linux.aarch64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.gtk.linux.ppc64le_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.gtk.linux.x86_64_4.20.0.I20210611-1600
│ ├── org.eclipse.platform.sdk.executable.win32.win32.x86_64_4.20.0.I20210611-1600
│ └── ...
├── buildInfo/reporeports/
├── features/
│ ├── ...
│ ├── org.eclipse.cdt.autotools_10.3.0.202104121328.jar
│ ├── org.eclipse.cdt.build.crossgcc_10.3.0.202104042017.jar
│ ├── org.eclipse.cdt.cmake_10.3.0.202106071842.jar
│ ├── org.eclipse.cdt.debug.dap.gdbjtag_10.3.0.202104042017.jar
│ ├── org.eclipse.cdt.debug.dap_10.3.0.202105191332.jar
│ └── ...
├── plugins/
│ ├── ...
│ ├── org.eclipse.sdk_4.20.0.v20210611-1600.jar
│ ├── org.eclipse.sdk_4.20.0.v20210611-1600.jar.pack.gz
│ └── ...
├── artifacts.jar
├── artifacts.xml.xz
├── content.jar
├── content.xml.xz
└── p2.index
GitHub - eclipse/tycho: Tycho project repository (tycho) Maven Tycho for building Eclipse plug-ins, OSGi bundles and Eclipse applications with the command line - Tutorial Tycho/FAQ - Eclipsepedia Tycho – Maven Site
The Maven Tycho build can be instructed to use p2 update sites, Maven repositories (as of Tycho 2.2.0) or Eclipse target platform definitions to search for dependencies.
org.eclipse.tycho:target-platform-configuration
=> for platform definitionorg.eclipse.tycho:target-platform-configuration
=> OS environmentorg.eclipse.tycho:tycho-maven-plugin
=> The Tycho Maven Plugin provides extensions to build Eclipse projects. I.e. adds define phases in the lifecycleorg.eclipse.tycho:tycho-compiler-plugin
=> Used to compile the OSGI bundles, coming from the target configurationorg.eclipse.tycho:tycho-p2-repository-plugin
=>org.eclipse.tycho:tycho-packaging-plugin
=> Packages the Eclipse OSGI bundle
Tycho Advanced by Dirk Fauth | vogella blog
Tycho uses the MANIFEST-first approach to resolve the dependencies
If this third-party-library is an OSGi bundle, and only in this case, Tycho is able to resolve such a dependency.
Target definition file resolver : TargetDefinitionResolver.resolveContentWithExceptions(TargetDefinition, IProvisioningAgent)