This guide helps existing MetaObjects users migrate to the new metaobjects.com architecture and modular structure introduced in v6.2.6+.
The v6.2.6+ release represents a major architectural enhancement with comprehensive package refactoring, modular structure, and revolutionary fluent constraint system. The primary changes are package refactoring, modular structure, and enhanced constraint capabilities.
- Package Structure:
com.draagon.meta.*→com.metaobjects.* - Group ID:
com.draagon→com.metaobjects - Domain: Moved to
metaobjects.comandmetaobjects.dev - Monolithic JAR → Focused modules
- Single dependency → Choose what you need
- Framework coupling → Optional integrations
- ✅ All APIs remain functionally identical (just new packages)
- ✅ Metadata formats unchanged
- ✅ Functionality preserved
- ✅ Configuration compatible
<dependency>
<groupId>com.draagon</groupId>
<artifactId>metaobjects</artifactId>
<version>5.1.0</version>
</dependency><dependency>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-core</artifactId>
<version>6.2.6-SNAPSHOT</version>
</dependency><dependency>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-core-spring</artifactId>
<version>6.2.6-SNAPSHOT</version>
</dependency>Note: Automatically includes metaobjects-core
<dependency>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-codegen-mustache</artifactId>
<version>6.2.5-SNAPSHOT</version>
</dependency><dependency>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-omdb</artifactId>
<version>6.2.5-SNAPSHOT</version>
</dependency><dependency>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-web-spring</artifactId>
<version>6.2.5-SNAPSHOT</version>
</dependency>Before:
// Using old packages
import com.draagon.meta.loader.simple.SimpleLoader;
import com.draagon.meta.object.MetaObject;
import com.draagon.meta.object.value.ValueObject;
SimpleLoader loader = new SimpleLoader("myLoader");
// ... rest of code unchangedAfter:
// Updated to new packages
import com.metaobjects.loader.simple.SimpleLoader;
import com.metaobjects.object.MetaObject;
import com.metaobjects.object.value.ValueObject;
SimpleLoader loader = new SimpleLoader("myLoader");
// ... rest of code remains the same- Dependency: Change to
metaobjects-corewith new groupId - Code: Update import statements to new package structure
Before:
// If you were using Spring features
@Autowired
private MetaDataLoader loader;After:
- Dependency: Change to
metaobjects-core-spring - Code: No changes required (even better Spring integration available)
- New Features: Access to
MetaDataService, auto-configuration
Before:
<plugin>
<groupId>com.draagon</groupId>
<artifactId>metaobjects-maven-plugin</artifactId>
<version>5.1.0</version>
</plugin>After:
<plugin>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-maven-plugin</artifactId>
<version>6.2.5-SNAPSHOT</version>
</plugin>- Plugin usage: Identical
- Templates: Fully compatible
Before:
// React MetaView components
import { MetaViewRenderer } from './metaviews/MetaViewRenderer';After:
- Dependency: Add
metaobjects-webormetaobjects-web-spring - Code: No changes required
<parent>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects</artifactId>
<version>6.2.5-SNAPSHOT</version>
</parent><plugin>
<groupId>com.metaobjects</groupId>
<artifactId>metaobjects-maven-plugin</artifactId>
<version>6.2.5-SNAPSHOT</version>
</plugin>implementation 'com.draagon:metaobjects:5.1.0'implementation 'com.metaobjects:metaobjects-core:6.2.5-SNAPSHOT'
// Add additional modules as needed
implementation 'com.metaobjects:metaobjects-core-spring:6.2.5-SNAPSHOT'// New optional convenience features
@Autowired
private MetaDataService metaDataService;
// Improved API with Optional support
Optional<MetaObject> userMeta = metaDataService.findMetaObjectByNameOptional("User");
boolean hasUser = metaDataService.metaObjectExists("User");# Try the new comprehensive examples
cd examples/basic-example && mvn compile exec:java
cd examples/spring-example && mvn compile exec:java
cd examples/osgi-example && mvn compile exec:javaThe new modular architecture provides clearer error messages and better debugging information.
- Smaller JARs: Include only needed functionality
- Faster startup: No unused framework loading
- Better caching: Optimized for specific use cases
- Improved bundle lifecycle management
- Better WeakReference cleanup patterns
- Optimized service discovery
If you were using internal APIs (rare), some package restructuring may require import updates:
// If you were using these internal APIs (uncommon)
// Before: com.metaobjects.generator.direct.*
// After: com.metaobjects.generator.mustache.*
// Most users won't be affectedOSGi bundle symbolic names have changed to reflect the new module structure:
com.metaobjectsobjects→com.metaobjectsobjects.core- Add new bundles:
com.metaobjectsobjects.core.spring, etc.
- Update dependencies to new modules
- Clean build:
mvn clean compile - Run tests:
mvn test - Test functionality: Verify your features work identically
Solution: Add the appropriate module dependency
Solution: Switch to metaobjects-core-spring for auto-configuration
Solution: Update plugin version to 6.2.5-SNAPSHOT and groupId to com.metaobjects
- Examples: Check
examples/for patterns matching your use case - Documentation: See README.md for comprehensive module guide
- Issues: Report migration problems at GitHub Issues
- Start simple: Migrate to
metaobjects-corefirst - Add integrations: Add Spring, web, or other modules as needed
- Test thoroughly: Verify all functionality before deployment
- Optimize: Remove unused dependencies after migration complete
The modular architecture provides the same powerful MetaObjects functionality with better dependency management and enhanced framework integration options.