Hey guys,

I just wanted to touch base on state of things with maven2Gradle (the
bootstrap plugin, converting from maven projects). I currently work on
improving the maven2Gradle so that it uses embedded maven (maven3
classes) instead of forking off a maven process.

1. To use maven in an embedded way I needed to pull extra dependencies
in, it's about 20 extra jars to the distro, most of them needs to be
jarjarred. This is the diagram of maven3 classes btw:
http://maven.apache.org/ref/3.0.3

2. I needed to resolve the problem with jarjar not updating the class
references in the resources. I wasn't sure what was the best strategy
solve the problem. Since I've already started looking at jarjar code,
I've made fix in jarjar: https://github.com/szczepiq/jarjar I've
released the jar into repo.gradle.org so that the build can consume
it.

3. I needed to add some hackery to fix the plexus configuration after
the jarjar runs:
https://github.com/gradle/gradle/blob/master/subprojects/core-impl/core-impl.gradle#L52

4. We now use 23 jars jar-jarred that are a compile dependency. It's
extra complexity and makes harder to browse source code because jarjar
doesn't do sources. So if someone needs debug into maven/plexus stuff
he needs sources on the side (or a separate dummy project with all
those dependencies, etc.).

Stepping back a bit. We need to jarjar maven3 classes to avoid clash
with stuff that lives in maven-ant-tasks. Maven-ant-tasks has been a
compile dependency to Gradle since pretty much always. It would be
awesome if we did small steps towards removing the maven-ant-tasks.
One of the spots that uses maven-ant-tasks implementation atm is our
MavenPom / DefaultMavenPom. MavenPom is a public interface that gives
access to underlying maven implementation via MavenPom#getModel(); I
did a quick check on compatibility between the old model and the new
model and the results are not bad: 4 methods from the old model were
removed (full list down the bottom).

With this email I wanted to share my findings. Please give feedback.

checking: Model VS Model
checking: Parent VS Parent
checking: Organization VS Organization
checking: Contributor VS Contributor
checking: Developer VS Developer
checking: License VS License
checking: MailingList VS MailingList
checking: Profile VS Profile
checking: BuildBase VS BuildBase
checking: Resource VS Resource
checking: PluginManagement VS PluginManagement
checking: Plugin VS Plugin
checking: Dependency VS Dependency
checking: Exclusion VS Exclusion
checking: PluginExecution VS PluginExecution
checking: Activation VS Activation
checking: ActivationProperty VS ActivationProperty
checking: ActivationFile VS ActivationFile
checking: ActivationOS VS ActivationOS
checking: Repository VS Repository
checking: RepositoryPolicy VS RepositoryPolicy
checking: DependencyManagement VS DependencyManagement
checking: DistributionManagement VS DistributionManagement
checking: Relocation VS Relocation
checking: DeploymentRepository VS DeploymentRepository
checking: Site VS Site
checking: Reporting VS Reporting
checking: ReportPlugin VS ReportPlugin
checking: ReportSet VS ReportSet
 only in class org.apache.maven.model.Reporting - isExcludeDefaultsValue
 only in class org.apache.maven.model.Reporting - setExcludeDefaultsValue
 only in class org.apache.maven.model.Reporting - setExcludeDefaultsValue
checking: Build VS Build
checking: Extension VS Extension
 only in class org.apache.maven.model.Extension - getKey
checking: CiManagement VS CiManagement
checking: Notifier VS Notifier
checking: IssueManagement VS IssueManagement
checking: Prerequisites VS Prerequisites
checking: Scm VS Scm

Cheers!
-- 
Szczepan Faber
Principal engineer@gradleware
Lead@mockito

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to