Am 07/18/16 um 15:02 schrieb Christofer Dutz:
> Hi,
> 
> 
> Unfortuantely I wrote this down as a Jira ticket, but it seems it wasn't 
> created in the end so I'll post this via Email ;-)
> 
> 
> I am currently working on clean support for Apache Flex build with Maven. 
> Prior to 3.3.1 non-java builds were sort of relying on a scope-resolution bug 
> that was fixed in newer version. Now non-default scopes can no longer have 
> transitive dependencies. In order to fix this, I did a little refactoring of 
> the scope resolution code in MavenRepositorySystemUtils.newSession().
> 
> 
> The idea is to wrap together the language-dependent parts of the scope 
> resolution and have these automatically injected into 
> DefaultRepositorySystemFactory. Per default there would only be one instance 
> (JavaLanguageSupport) available. But I could provide other LanguageSupport 
> implementations for other languages via Maven extensions.
> 
> 
> I implemented this as a POC. I didn't find my changes breaking anything in 
> the maven test-suite and I was able to add my FlexJsLanguageSupport to maven 
> and have it called for scope resolution requests.
> 
> 
> I just pushed a commit to my maven fork:
> 
> https://github.com/chrisdutz/maven/commit/cd205837540c3df74ad4a8eb8b6c710a93cff156
> 
> And here ist the FlexJS counterpart:
> 
> https://git1-us-west.apache.org/repos/asf?p=flex-falcon.git;a=commit;h=aea14be67db2b28b766d274d900ce076fdb8522b
> 
> 
> Does it make sense to invest more time into this feature, or is this road a 
> dead-end?
> 

Instead of adding that 'LanguageSupport' interface, I would go for
injecting the 'DependencyGraphTransformer' to use directly. No need for
a new interface. So that a customized 'ConflictResolver' can be injected
you can setup the way you want. Makes things like your
'MultiLanguageScopeDeriver' part of your extension instead of Maven
core. I think some kind of 'DependencyGraphTransformer' extension point
will be provided in 3.5. Maybe there will be more than just one
transformer for the various classpaths. We currently resolve the project
artifacts once and then make Maven build the classpaths based on those
artifacts. In 3.5 this may be enhanced to provide various artifact
resolution strategies based on the classpath to build. So that
'MavenProject.getCompileClasspathElements' may provide different
artifacts than 'MavenProject.getTestClasspathElements'. Nothing concrete
yet.

Regards,
-- 
Christian


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to