diff --git a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/RootAnalyzer.java b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/RootAnalyzer.java
index d97645e..999803e 100644
--- a/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/RootAnalyzer.java
+++ b/plugins/org.eclipse.oomph.p2.core/src/org/eclipse/oomph/p2/internal/core/RootAnalyzer.java
@@ -66,24 +66,37 @@
 
   public static void removeImplicitUnits(Map<IMetadataRepository, Set<IInstallableUnit>> result, IProgressMonitor monitor, boolean onlyIfRedundant)
   {
+    removeImplicitUnits(result, monitor, onlyIfRedundant, true);
+
+  }
+
+  public static void removeImplicitUnits(Map<IMetadataRepository, Set<IInstallableUnit>> result, IProgressMonitor monitor, boolean onlyIfRedundant,
+      boolean ignoreJavaRequirements)
+  {
     for (Map.Entry<IMetadataRepository, Set<IInstallableUnit>> entry : result.entrySet())
     {
       IMetadataRepository metadataRepository = entry.getKey();
       Set<IInstallableUnit> ius = entry.getValue();
 
-      removeImplicitUnits(ius, metadataRepository, monitor, onlyIfRedundant);
+      removeImplicitUnits(ius, metadataRepository, monitor, onlyIfRedundant, ignoreJavaRequirements);
     }
   }
 
   public static void removeImplicitUnits(Set<IInstallableUnit> ius, IQueryable<IInstallableUnit> queryable, IProgressMonitor monitor, boolean onlyIfRedundant)
   {
+    removeImplicitUnits(ius, queryable, monitor, onlyIfRedundant, true);
+  }
+
+  public static void removeImplicitUnits(Set<IInstallableUnit> ius, IQueryable<IInstallableUnit> queryable, IProgressMonitor monitor, boolean onlyIfRedundant,
+      boolean ignoreJavaRequirements)
+  {
     Set<IInstallableUnit> rootIUs = new HashSet<>(ius);
     Set<IInstallableUnit> currentlyVisitingIUs = new HashSet<>();
     Set<IInstallableUnit> visitedIUs = new HashSet<>();
 
     for (IInstallableUnit iu : ius)
     {
-      removeImplicitUnits(iu, rootIUs, currentlyVisitingIUs, visitedIUs, queryable, monitor, onlyIfRedundant);
+      removeImplicitUnits(iu, rootIUs, currentlyVisitingIUs, visitedIUs, queryable, monitor, onlyIfRedundant, ignoreJavaRequirements);
     }
 
     if (rootIUs.size() < ius.size())
@@ -93,14 +106,15 @@
   }
 
   private static void removeImplicitUnits(IInstallableUnit iu, Set<IInstallableUnit> rootIUs, Set<IInstallableUnit> currentlyVisitingIUs,
-      Set<IInstallableUnit> visitedIUs, IQueryable<IInstallableUnit> queryable, IProgressMonitor monitor, boolean onlyIfRedundant)
+      Set<IInstallableUnit> visitedIUs, IQueryable<IInstallableUnit> queryable, IProgressMonitor monitor, boolean onlyIfRedundant,
+      boolean ignoreJavaRequirements)
   {
     if (visitedIUs.add(iu))
     {
       currentlyVisitingIUs.add(iu);
       for (IRequirement requirement : iu.getRequirements())
       {
-        if (!isTypeRequirement(requirement) && !isJavaPackageRequirment(requirement))
+        if (!isTypeRequirement(requirement) && !ignoreJavaRequirements || !isJavaPackageRequirment(requirement))
         {
           for (IInstallableUnit requiredIU : P2Util.asIterable(queryable.query(QueryUtil.createMatchQuery(requirement.getMatches()), null)))
           {
@@ -113,7 +127,7 @@
                 rootIUs.remove(requiredIU);
               }
 
-              removeImplicitUnits(requiredIU, rootIUs, currentlyVisitingIUs, visitedIUs, queryable, monitor, onlyIfRedundant);
+              removeImplicitUnits(requiredIU, rootIUs, currentlyVisitingIUs, visitedIUs, queryable, monitor, onlyIfRedundant, ignoreJavaRequirements);
             }
           }
         }
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
index 7655e87..9be5093 100644
--- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
+++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
@@ -125,6 +125,8 @@
 
   public static final String ANNOTATION_SORT_LOCATIONS = "sortLocations"; //$NON-NLS-1$
 
+  public static final String ANNOTATION_IGNORE_JAVA_REQUIREMENTS = "ignoreJavaRequirements"; //$NON-NLS-1$
+
   public static final String ANNOTATION_GENERATE_SERVER_XML = "generateServerXML"; //$NON-NLS-1$
 
   public static final String NESTED_ANNOTATION_REPOSITORY_IDS = "RepositoryIDs"; //$NON-NLS-1$
@@ -193,6 +195,7 @@
     final boolean sortLocations = isAnnotationDetail(annotation, ANNOTATION_SORT_LOCATIONS, false);
     final boolean generateImplicitUnits = isAnnotationDetail(annotation, ANNOTATION_GENERATE_IMPLICIT_UNITS, false);
     final boolean minimizeImplicitUnits = isAnnotationDetail(annotation, ANNOTATION_MINIMIZE_IMPLICIT_UNITS, false);
+    final boolean ignoreJavaRequirements = isAnnotationDetail(annotation, ANNOTATION_IGNORE_JAVA_REQUIREMENTS, true);
     final boolean versions = isAnnotationDetail(annotation, ANNOTATION_GENERATE_VERSIONS, false);
     final boolean includeAllPlatforms = isAnnotationDetail(annotation, ANNOTATION_INCLUDE_ALL_PLATFORMS, targlet.isIncludeAllPlatforms());
     final boolean includeConfigurePhase = isAnnotationDetail(annotation, ANNOTATION_INCLUDE_CONFIGURE_PHASE, true);
@@ -212,7 +215,8 @@
     }
 
     final Map<IMetadataRepository, Set<IInstallableUnit>> repositoryIUs = analyzeRepositories(targlet, profile, artificialRoot, metadataRepositories,
-        workspaceIUInfos, extraUnits, preferredURLs, generateImplicitUnits, minimizeImplicitUnits, singleLocation, sortLocations, monitor);
+        workspaceIUInfos, extraUnits, preferredURLs, generateImplicitUnits, minimizeImplicitUnits, singleLocation, sortLocations, ignoreJavaRequirements,
+        monitor);
 
     List<String> targetReferences = new ArrayList<>();
     for (String composedTarget : composedTargets)
@@ -669,9 +673,8 @@
   private static Map<IMetadataRepository, Set<IInstallableUnit>> analyzeRepositories(Targlet targlet, Profile profile, IInstallableUnit artificialRoot,
       List<IMetadataRepository> metadataRepositories, Map<IInstallableUnit, WorkspaceIUInfo> workspaceIUInfos, Set<IVersionedId> extraUnits,
       List<String> preferredURLs, boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations,
-      IProgressMonitor monitor)
+      boolean ignoreJavaRequirements, IProgressMonitor monitor)
   {
-
     Set<String> workspaceIDs = new HashSet<>();
     for (IInstallableUnit iu : workspaceIUInfos.keySet())
     {
@@ -708,7 +711,8 @@
 
     Map<String, IMetadataRepository> queryables = sortMetadataRepositories(targlet, metadataRepositories, preferredURLs, monitor);
 
-    return assignUnits(queryables, extraUnits, generateImplicitUnits, minimizeImplicitUnits, singleLocation, sortLocations, profileIUs, monitor);
+    return assignUnits(queryables, extraUnits, generateImplicitUnits, minimizeImplicitUnits, singleLocation, sortLocations, ignoreJavaRequirements, profileIUs,
+        monitor);
   }
 
   private static Map<String, IMetadataRepository> sortMetadataRepositories(Targlet targlet, List<IMetadataRepository> metadataRepositories,
@@ -771,8 +775,8 @@
   }
 
   private static Map<IMetadataRepository, Set<IInstallableUnit>> assignUnits(Map<String, IMetadataRepository> queryables, Set<IVersionedId> extraUnits,
-      boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations, Set<IInstallableUnit> resolvedIUs,
-      IProgressMonitor monitor)
+      boolean generateImplicitUnits, boolean minimizeImplicitUnits, boolean singleLocation, boolean sortLocations, boolean igoreJavaRquirements,
+      Set<IInstallableUnit> resolvedIUs, IProgressMonitor monitor)
   {
     Map<IMetadataRepository, Set<IInstallableUnit>> result = sortLocations ? new TreeMap<>(new Comparator<IMetadataRepository>()
     {
@@ -800,7 +804,7 @@
 
           if (!generateImplicitUnits)
           {
-            RootAnalyzer.removeImplicitUnits(ius, queryable, monitor, false);
+            RootAnalyzer.removeImplicitUnits(ius, queryable, monitor, false, igoreJavaRquirements);
           }
           else if (minimizeImplicitUnits)
           {
@@ -837,7 +841,7 @@
 
       if (!generateImplicitUnits)
       {
-        RootAnalyzer.removeImplicitUnits(result, monitor, false);
+        RootAnalyzer.removeImplicitUnits(result, monitor, false, igoreJavaRquirements);
       }
       else if (minimizeImplicitUnits)
       {
diff --git a/releng/org.eclipse.oomph.parent/tp/org.eclipse.oomph.tp.target b/releng/org.eclipse.oomph.parent/tp/org.eclipse.oomph.tp.target
index 6d88328..f7e8658 100644
--- a/releng/org.eclipse.oomph.parent/tp/org.eclipse.oomph.tp.target
+++ b/releng/org.eclipse.oomph.parent/tp/org.eclipse.oomph.tp.target
@@ -1,17 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde version="3.8"?>
-<target name="Generated from Oomph" sequenceNumber="115">
+<target name="Generated from Oomph" sequenceNumber="116">
   <locations>
     <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-      <unit id="javaewah" version="0.0.0"/>
-      <unit id="net.i2p.crypto.eddsa" version="0.0.0"/>
-      <unit id="org.apache.commons.cli" version="0.0.0"/>
-      <unit id="org.apache.commons.collections" version="0.0.0"/>
-      <unit id="org.apache.commons.commons-beanutils" version="0.0.0"/>
-      <unit id="org.apache.commons.compress" version="0.0.0"/>
-      <unit id="org.apache.commons.io" version="0.0.0"/>
-      <unit id="org.apache.sshd.osgi" version="0.0.0"/>
-      <unit id="org.apache.sshd.sftp" version="0.0.0"/>
       <unit id="org.eclipse.egit.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
       <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
@@ -26,9 +17,6 @@
       <unit id="org.eclipse.swtbot.generator" version="0.0.0"/>
       <unit id="org.eclipse.userstorage.oauth" version="0.0.0"/>
       <unit id="org.eclipse.userstorage.tests" version="0.0.0"/>
-      <unit id="org.jdom" version="0.0.0"/>
-      <unit id="slf4j.api" version="0.0.0"/>
-      <unit id="slf4j.nop" version="0.0.0"/>
       <repository location="https://download.eclipse.org/eclipse/updates/4.28-I-builds"/>
       <repository location="https://download.eclipse.org/egit/updates-stable-nightly"/>
       <repository location="https://download.eclipse.org/justj/jres/17/updates/milestone/latest"/>
diff --git a/setups/Oomph.setup b/setups/Oomph.setup
index 53e9c48..e06a32d 100644
--- a/setups/Oomph.setup
+++ b/setups/Oomph.setup
@@ -440,6 +440,10 @@
               key="includeSource">
             <value>true</value>
           </detail>
+          <detail
+              key="ignoreJavaRequirements">
+            <value>false</value>
+          </detail>
         </annotation>
         <requirement
             name="*"/>
