This is the slide deck of my lightning talk at Alfresco Devcon 2019 in Edinburgh. The talk was held in a slot with 6 other presenters, and the recording should be available on YouTube sometime in February.
7. Learn. Connect. Collaborate.
Step 1: Deal with Maven mess
Alfresco != good at Maven
• 5.2.f: antlr 2.7.7 + 3.5.2
• Distribution BOM is dead
Task #1: Create BOM from GA WAR
Task #2: Find + eliminate duplicates
8. Learn. Connect. Collaborate.
Step 1: Deal with Maven mess
Task #1: Create BOM from GA WAR
• Tool: artifact-lookup-maven-plugin
• Output: <dependencies> block
mvn com.codspire.plugins:artifact-lookup-maven-plugin:lookup
Results
• 291 <dependency>
• 1 failure (slf4j-api)
• +2 failures w/ proprietary AOS
9. Learn. Connect. Collaborate.
Step 1: Deal with Maven mess
Task #2: Find + eliminate duplicates
• Tool: maven-shade-plugin
• Reveals conflicts – filters for cleanup
• Bonus: “simple” fat JAR for next steps
10. Learn. Connect. Collaborate.
Step 1: Deal with Maven mess
Task #2: Find + eliminate duplicates
• Tool: maven-shade-plugin
• Reveals conflicts – filters for cleanup
• Bonus: “simple” fat JAR for next steps
Results
• 11 JAR + 372 class conflicts
• 1 redundant JAR
• Share: 38 class conflicts
• ALF-22021 – 22029, ALF-22053
18. Learn. Connect. Collaborate.
Review: Current state
https://github.com/AFaust/simple-alfresco-executables
Working executable JARs
• ACS 179 MiB, Share: 84 MiB
• “Typical” startup time
Effort ~5 person days
19. Learn. Connect. Collaborate.
Outlook: Optimisations
Pre-built TLD / annotation inventory
• Avoid JAR listing
• Potential: ACS ~50-60 sec, Share ~15 sec
Maven: build without unpack
• Shade in sub-path + AMP support
• Potential: ~15-20 min
20. Learn. Connect. Collaborate.
Outlook: Substrate VM / AOT
Investigation
• Rhino JS pre-compilation
• AOP proxy pre-generation
• Built-time AspectJ binary weaving
Test new GraalVM release candidates