Lars Corneliussen created NPANDAY-556:
-----------------------------------------

             Summary: Importer for Nuget Packages
                 Key: NPANDAY-556
                 URL: https://issues.apache.org/jira/browse/NPANDAY-556
             Project: NPanday
          Issue Type: New Feature
          Components: Development Setup, Maven Plugins
    Affects Versions: 1.5.0-incubating
            Reporter: Lars Corneliussen
            Assignee: Lars Corneliussen


Nuget Packages are much broader than Maven Artifacts. Our first thought was to 
implement a repository layout that would enable for resolving nuget packages 
directly (see NPANDAY-372).

But those packages come in various shapes and are not as easily converted to 
{{dotnet-library}} artifacts as first thought.

h3. Library Importer

Instead we will create a plugin, that helps importing nuget packages (and soon 
also plain DLL-libs) into maven artifacts. As a general rule, each DLL 
contained in a single {{nupkg}} will result in a separate maven artifact.

Some of the challenges we see:

h4. Versions

Nuget packages (and dlls) have four version numbers while maven only has three. 
In most cases those are not used in nuget, but if, there has to be some manual 
mapping.

h4. Multi-targeted packages

Nuget packages may contain libraries for different target frameworks (net20, 
35, wp, sl, ...); something that we'd like to support in NPanday too 
(NPANDAY-405)

As a first approach, you'll have to specify which of the versions to import.

We could also support a mapping from framework versions to maven version 
qualifiers, as for example {{1.2-net20}}

h4. Dependencies

Since there is no easy mapping from package to artifact, it is not that easy to 
convert the dependencies either. For each import it will be necessary to 
specify how the reps are mapped.

h4. What more?

Please comment or edit, if you see more challenges that I haven't seen yet.

h2. Technical approach

A plugin with it's own lifecycle will 'compile' import declarations and then 
perform the import on 'compile'; then install and deploy the imported packages 
on the corresponding maven life cycles 'install' and 'deploy'.

{code:title=example import declaration}
<libs xmlns="http://npanday.apache.org/library-import/1.0.0";>
  <nuget>
    <package>NUnit</package>
    <versionMap>
      <map>
        <nuget>2.6.0.12054</nuget>
        <maven>2.6.0</maven>
      </map>
      <map>
        <nuget>2.5.10.11092</nuget>
        <maven>2.5.10</maven>
      </map>
    </versionMap>
    <libDirs>
      <default>net40</default>
    </libDirs>
  </nuget>
</libs>
{code}


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to