[
https://issues.apache.org/jira/browse/NPANDAY-556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lars Corneliussen updated NPANDAY-556:
--------------------------------------
Description:
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. Prerelease versions
Nuget >= 1.6 does also support prerelease versions. These should be mapped to
SNAPSHOT, if possible.
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>
<version source="2.6.0.12054" mapTo="2.6.0"/>
<version source="2.5.10.11092" mapTo="2.5.10"/>
<libDirs>
<default>net40</default>
</libDirs>
</nuget>
</libs>
{code}
was:
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}
> 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
> Labels: nuget
>
> 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. Prerelease versions
> Nuget >= 1.6 does also support prerelease versions. These should be mapped to
> SNAPSHOT, if possible.
> 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>
> <version source="2.6.0.12054" mapTo="2.6.0"/>
> <version source="2.5.10.11092" mapTo="2.5.10"/>
> <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