diff --git a/emf/codegen.maven.example/ecore.enum.consumer/model/enumconsumer.ecore b/emf/codegen.maven.example/ecore.enum.consumer/model/enumconsumer.ecore
new file mode 100644
index 0000000..6e2380a
--- /dev/null
+++ b/emf/codegen.maven.example/ecore.enum.consumer/model/enumconsumer.ecore
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/emf/codegen.maven.example/ecore.enum.consumer/pom.xml b/emf/codegen.maven.example/ecore.enum.consumer/pom.xml
new file mode 100644
index 0000000..3d06c20
--- /dev/null
+++ b/emf/codegen.maven.example/ecore.enum.consumer/pom.xml
@@ -0,0 +1,110 @@
+
+
+
+ 4.0.0
+
+
+ org.eclipse.daanse
+ org.eclipse.daanse.tooling.emf.codegen.maven.example
+ 0.0.1-SNAPSHOT
+
+
+
+ org.eclipse.daanse.tooling.emf.codegen.maven.example.ecore.enum.consumer
+ jar
+
+ Daanse EMF Codegen Example - EEnum Consumer (cross-package default
+ value)
+ Regression test: an EAttribute typed by an EEnum from a
+ dependency ecore, with a defaultValueLiteral. Reproduces the
+ "cannot find symbol PUBLIC_LITERAL" compile failure seen in xmla.csdl
+ when the external GenModel inherited a stale JDK14 complianceLevel.
+
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+
+
+ org.eclipse.emf
+ org.eclipse.emf.ecore
+
+
+ org.eclipse.daanse
+
+ org.eclipse.daanse.tooling.emf.codegen.maven.example.ecore.enum.provider
+ ${project.version}
+
+
+ org.eclipse.fennec.emf
+ org.eclipse.fennec.emf.osgi.api
+ 0.1.1
+
+
+ org.eclipse.fennec.emf
+ org.eclipse.fennec.emf.osgi.component
+ runtime
+
+
+
+
+
+
+ org.eclipse.daanse
+ org.eclipse.daanse.tooling.emf.codegen.maven
+ ${project.version}
+
+
+
+ generate
+
+
+ model/enumconsumer.ecore
+ org.eclipse.daanse.example.enumconsumer
+ target/generated-sources/emf
+
+
+
+
+
+ biz.aQute.bnd
+ biz.aQute.bndlib
+ 7.1.0
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.6.0
+
+
+ generate-sources
+
+ add-source
+
+
+
+ target/generated-sources/emf
+
+
+
+
+
+
+
+
+
diff --git a/emf/codegen.maven.example/ecore.enum.provider/model/enumprovider.ecore b/emf/codegen.maven.example/ecore.enum.provider/model/enumprovider.ecore
new file mode 100644
index 0000000..e41210c
--- /dev/null
+++ b/emf/codegen.maven.example/ecore.enum.provider/model/enumprovider.ecore
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/emf/codegen.maven.example/ecore.enum.provider/pom.xml b/emf/codegen.maven.example/ecore.enum.provider/pom.xml
new file mode 100644
index 0000000..15c7b54
--- /dev/null
+++ b/emf/codegen.maven.example/ecore.enum.provider/pom.xml
@@ -0,0 +1,103 @@
+
+
+
+ 4.0.0
+
+
+ org.eclipse.daanse
+ org.eclipse.daanse.tooling.emf.codegen.maven.example
+ 0.0.1-SNAPSHOT
+
+
+
+ org.eclipse.daanse.tooling.emf.codegen.maven.example.ecore.enum.provider
+ jar
+
+ Daanse EMF Codegen Example - EEnum Provider
+ Provides an EEnum (AccessKind) consumed by ecore.enum.consumer
+ as an attribute default value. Regression coverage for the cross-package
+ EEnumLiteral reference path (legacy "_LITERAL" suffix vs modern Java enum
+ constant).
+
+
+
+ org.eclipse.emf
+ org.eclipse.emf.common
+
+
+ org.eclipse.emf
+ org.eclipse.emf.ecore
+
+
+ org.eclipse.fennec.emf
+ org.eclipse.fennec.emf.osgi.api
+ 0.1.1
+
+
+ org.eclipse.fennec.emf
+ org.eclipse.fennec.emf.osgi.component
+ runtime
+
+
+
+
+
+
+ org.eclipse.daanse
+ org.eclipse.daanse.tooling.emf.codegen.maven
+ ${project.version}
+
+
+
+ generate
+
+
+ model/enumprovider.ecore
+ org.eclipse.daanse.example.enumprovider
+ target/generated-sources/emf
+
+
+
+
+
+ biz.aQute.bnd
+ biz.aQute.bndlib
+ 7.1.0
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.6.0
+
+
+ generate-sources
+
+ add-source
+
+
+
+ target/generated-sources/emf
+
+
+
+
+
+
+
+
+
diff --git a/emf/codegen.maven.example/pom.xml b/emf/codegen.maven.example/pom.xml
index 99b7787..a64474e 100644
--- a/emf/codegen.maven.example/pom.xml
+++ b/emf/codegen.maven.example/pom.xml
@@ -36,11 +36,13 @@
ecore.annotated
ecore.loadpackage
ecore.noosgi
+ ecore.enum.provider
genmodel.simple
ecore.dependencies
ecore.dependencies.subpackages
ecore.dependencies.subpackages.consumer.subpackages
+ ecore.enum.consumer
genmodel.dependencies
diff --git a/emf/codegen.maven/src/main/java/org/eclipse/daanse/tooling/emf/codegen/EmfGenerateMojo.java b/emf/codegen.maven/src/main/java/org/eclipse/daanse/tooling/emf/codegen/EmfGenerateMojo.java
index 694f6f5..a47da56 100644
--- a/emf/codegen.maven/src/main/java/org/eclipse/daanse/tooling/emf/codegen/EmfGenerateMojo.java
+++ b/emf/codegen.maven/src/main/java/org/eclipse/daanse/tooling/emf/codegen/EmfGenerateMojo.java
@@ -852,6 +852,14 @@ private GenModel createGenModel(EPackage ePackage, String projectName, ResourceS
// URI during subsequent code-generation.
GenModel externalModel = GenModelFactory.eINSTANCE.createGenModel();
externalModel.setModelName("External");
+ // Inherit the main genmodel's complianceLevel. Without this, the new
+ // external GenModel defaults to JDK14, and EMF emits cross-package
+ // EEnumLiteral references in the legacy "_LITERAL" form (see
+ // GenEnumLiteralImpl.getEnumLiteralInstanceConstantName, which appends
+ // _LITERAL when complianceLevel < JDK50). The producing module's
+ // generated enum class only has the modern "" constant, so
+ // consumer code fails to compile with "cannot find symbol PUBLIC_LITERAL".
+ externalModel.setComplianceLevel(genModel.getComplianceLevel());
String ecoreName = ecoreFile.getName();
String baseName = ecoreName.endsWith(".ecore")
? ecoreName.substring(0, ecoreName.length() - 6)
@@ -1573,6 +1581,11 @@ private GenPackage createGenPackageFromEcore(ResourceSet resourceSet, EPackage e
GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
genModel.initialize(Collections.singletonList(ePackage));
genModel.setModelName(capitalize(ePackage.getName()));
+ // Match the main genmodel's complianceLevel (set in createGenModel).
+ // The default JDK14 would trigger legacy "_LITERAL" emission for
+ // any cross-package EEnum default values when this synthesized
+ // GenPackage is consumed by another module's generator.
+ genModel.setComplianceLevel(org.eclipse.emf.codegen.ecore.genmodel.GenJDKLevel.JDK170_LITERAL);
// Create a synthetic resource for the GenModel
URI genModelUri = URI.createURI("synthetic:/" + ePackage.getName() + ".genmodel");