Hello everybody,
I think I will upload to maven central repository the log4net
artifacts I
have created. They are only based on binaries and do not define any
dependencies because I haven't yet succeed to make work
classifiers and
dependencies in the same time.
Concerning the sources classifier, do we have the jar file format
or there
is a format for dotnet tools?
Concerning the pdb files, it sounds that there is no much support
so I will
wait until I understand how to make them and how to use them in
nmaven/dotnet tools.
Concerning the help of log4net team to support this artifact, I
think it is
better to wait for the full support of all previous questions.
I hope there will be no problem on the central repository team to
let me
upload these artifacts. Brett, I think it is the same case for you
and
nunit, so could I had you in copy if I have troubles?
The following files will be uploaded:
log4net-1.2.10.0-cli-1.0.dll
log4net-1.2.10.0-mono-1.0.dll
log4net-1.2.10.0-mono-2.0.dll
log4net-1.2.10.0-net-1.0.dll
log4net-1.2.10.0-net-1.1.dll
log4net-1.2.10.0-net-2.0.dll
log4net-1.2.10.0-netcf-1.0.dll
log4net-1.2.10.0.pom
log4net-1.2.10.0-sscli-1.0.dll
They have been generated using this script:
#!/bin/sh
LOG4NETVERSION=1.2.10.0
export LOG4NETVERSION
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/net/2.0/release/log4net.dll
-Dclassifier=net-2.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/net/1.0/release/log4net.dll
-Dclassifier=net-1.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/net/1.1/release/log4net.dll
-Dclassifier=net-1.1
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/mono/2.0/release/log4net.dll
-Dclassifier=mono-2.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/mono/1.0/release/log4net.dll
-Dclassifier=mono-1.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/netcf/1.0/release/
log4net.dll
-Dclassifier=netcf-1.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/cli/1.0/release/log4net.dll
-Dclassifier=cli-1.0
mvn install:install-file -DpomFile=pom.xml
-Dfile=lib/log4net-$LOG4NETVERSION/bin/sscli/1.0/release/
log4net.dll
-Dclassifier=sscli-1.0
cd ~/.m2/repository/log4net/log4net/$LOG4NETVERSION/
echo "Bundling local repository files"
jar -cf log4net-bundle.jar *.dll *.pom
And my pom is:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>log4net</groupId>
<artifactId>log4net</artifactId>
<!-- the last version number will be used for nmaven artifact
packaging -->
<version>1.2.10.0</version>
<name>Log for .Net</name>
<description>log4net is a tool to help the programmer output log
statements to a variety of output targets.
</description>
<url>http://logging.apache.org/log4net/</url>
<packaging>dotnet:library</packaging>
<developers>
<developer>
<id>mimil</id>
<email>[EMAIL PROTECTED]</email>
<roles>
<role>artifact creator</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>The Apache2 License</name>
<url>
http://logging.apache.org/log4net/license.html
</url>
</license>
</licenses>
<build>
<finalName>log4net</finalName>
<plugins>
<!-- dotnet compiler plugin is needed to be aware of
dot:library packaging -->
<plugin>
<groupId>org.apache.maven.dotnet.plugins</groupId>
<artifactId>maven-dotnet-compiler-plugin</
artifactId>
<!--version>0.16-incubating-SNAPSHOT</version-->
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
Any comments are welcome before I upload them.
Regards,
Cedric,
On Fri, Nov 7, 2008 at 5:03 AM, James Carpenter <[EMAIL PROTECTED]
>wrote:
You might want to consider adding the pdb and source archives with
appropriate classifiers along with the assemblies/dlls. Even if
you don't
index the pdb files (see below) it will be easy to go back and do
so later.
=======================================
If you want to go way out of the way you can even add source server
information to the pdb files.
Lets say you create a maven plugin with the following goal/
arguments:
prompt>mvn source-server:resolve -DgroupId="com.acme.mortar"
-DartifactId="tools" -Dversion="1.3.2" -DrelativeFile="tooling/
trowel.cs"
-DoutputPath="C:\mysrc\"
The result of this goal would be to resolve the
com.acme.mortar:tools:sources:1.3.2:jar artifact and extract the
tooling/trowel.cs file and copy it to
C:\mysrc\com\acme\mortar\tools\1.3.2\tooling\trowel.cs
You then process the pdb files to inject the magic srcsrv stream
(see an
earlier post) which will tell the MS debugging tools for windows
how to form
the above command for any of the files used to build the assembly/
pdb.
The result of this dance will be the ability for the Visual Studio
debugger to magically step down into the source code of any of the
assemblies you have placed into the maven repository.
I wrote a post on this mailing list a few weeks ago which gives a
lot more
of the details.
On Nov 6, 2008, at 3:52 PM, Mimil Mimil wrote:
Hi,
As you advised I am making artifacts from binaries because I do
not
belong
to the projects I am doing artifacts - I just want to add more
nmaven
artifacts for the community.
Dependencies will be differents are they are I think related to
the
environments so I think the only way to manage this is classifier.
How the lib differs between environments? I don't have any
knowledge of
.net
but the clearest exemple is for compact framework. As it targets
mobiles,
pda, ... it is certainly a lot different from the conventional
framework.
As yes did different DLLs for the different frameworks I think
it is
because
they need it, that's all I can say =)
An easy way would be for now to not set dependencies (if we have
problem
on
this point) but is the classifier stuff supported out of the box
to
deploy
manual artifacts? I mean is the namming convention
<artifactId>-<version>-<everything else after version is
considered as a
classifier> ?
Do we have to develop a little plugin in order to specify the
classifier
of
artifacts? I say that because the only things I saw through the
web as or
based on the maven-jar-plugin or on war plugin which I don't
remember the
name.
Maybe http://mojo.codehaus.org/build-helper-maven-plugin/usage.html
can
be
used with attach-artifact?
Regards,
Cedric,
On Thu, Nov 6, 2008 at 7:19 PM, Brett Porter <[EMAIL PROTECTED]>
wrote:
Yes, you should use classifiers, so the POM you have looks fine
(and
there
need be just one). If you are building with NMaven yourself, we
need to
make
sure the compiler plugin supports adding classifiers.
Profiles shouldn't be needed. If the dependencies differ
between them,
it
might be a problem.
Is it required to have different versions for each framework?
How do
they
differ exactly?
Cheers,
Brett
On 05/11/2008, at 10:36 AM, Mimil Mimil wrote:
Hello,
I am trying to make nmaven artifacts using dll binaries but I
would
like
to
define the dependencies of this dll.
In the case of log4net I am currently trying to make I want to
make
artifacts for each dotnet environments (dotnet 2.0, dotnet
1.1, mono
...)
and I think it should be handled using classifiers.
As for now I think we have to use profiles to define each
environemnt
artifacts, by the way I don't know how to use these profiles
to make
classifiers.
Here is my current pom with net-1.2 profile and its
dependencies:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>log4net</groupId>
<artifactId>log4net</artifactId>
<version>1.2.10.0-SNAPSHOT</version>
<name>Log for .Net</name>
<description>log4net is a tool to help the programmer output
log
statements to a variety of output targets.
</description>
<url>http://www.xml-rpc.net/</url>
<packaging>dotnet:library</packaging>
<licenses>
<license>
<name>The Apache2 License</name>
<url>
http://logging.apache.org/log4net/license.html
</url>
</license>
</licenses>
<build>
<finalName>log4net</finalName>
<!-- To define the plugin version in your parent POM -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-repository-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</pluginManagement>
<!-- To use the plugin goals in your POM or parent POM
-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-repository-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>net-2.0</id>
<dependencies>
<dependency>
<groupId>System.Data</groupId>
<artifactId>System.Data</artifactId>
<version>2.0.0.0</version>
<type>dotnet:gac</type>
<scope>system</scope>
<classifier>b77a5c561934e089</classifier>
<systemPath>${env.GAC_ROOT}/System.Data/
2.0.0.0__b77a5c561934e089/System.Data.dll</systemPath>
</dependency>
<dependency>
<groupId>System.Web</groupId>
<artifactId>System.Web</artifactId>
<version>2.0.0.0</version>
<type>dotnet:gac</type>
<scope>system</scope>
<classifier>b03f5f7f11d50a3a</classifier>
<systemPath>${env.GAC_ROOT}/System.Web/
2.0.0.0__b03f5f7f11d50a3a/System.Web.dll</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
Another way to do it is to have a pom by environment and
insert the
classifier name inside the versionId. I remember something about
versionId
that must be w.x.y.z, will it be a problem?
I thought to use repository:bundle-pack for the installation in
repositories
but I don't know if I have to use this or just a mvn
deploy:deploy-file
or...
Any help welcome. I think it will help a lot to have more nmaven
artifacts
to have such a thing clear (and documented somewhere).
Thanks,
Regards,
Cédric,
--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/
Sincerely,
James Carpenter
cell: 832-677-7247
email: [EMAIL PROTECTED]