After running mvn eclipse:make-artifacts -DstripQualifier=true -DeclipseDir=...path/to/eclipse, you might have lots of source JARs but they aren’t in the right place for Maven 2 to pick them up.
This little Python script fixes that. Just run it after eclipse:make-artifacts.
Note: You may be wondering why I use eclipse:make-artifacts instead of the recommended eclipse:to-maven. Simple: I don’t like to have a dozen core-*.jar in my project.
"""Maven 2 Eclipse Artifact Source resolver
After importing Eclipse artifacts into an M2 repository with
> mvn eclipse:make-artifacts -DstripQualifier=true -DeclipseDir=.../eclipse
run this script to move all source JARs in the right place for
Maven 2 to pick them up.
"""
import os, sys
from shutil import copyfile
def processGroup(path):
print 'group %s' % path
for dir in os.listdir(path):
path2 = os.path.join(path, dir)
if '.' in dir:
processArtifact(path2)
else:
processGroup(path2)
def processArtifact(path):
srcPath = path + '.source'
#print 'processArtifact',srcPath
if os.path.exists(srcPath):
processArtifactWithSource(path)
def processArtifactWithSource(basePath):
binPath = basePath
srcPath = basePath + '.source'
baseName = os.path.basename(basePath)
print 'artifact', baseName
for version in os.listdir(binPath):
vbinPath = os.path.join(binPath, version)
vsrcPath = os.path.join(srcPath, version)
srcJar = os.path.join(vsrcPath, '%s.source-%s.jar' % (baseName, version))
destJar = os.path.join(vbinPath, '%s-%s-sources.jar' % (baseName, version))
if os.path.exists(srcJar):
print '%s -> %s' % (srcJar, destJar)
copyfile(srcJar, destJar)
m2repo = os.environ['M2_REPO']
if not m2repo:
raise Exception('Env variable M2_REPO is not set')
root = os.path.join(m2repo, 'org', 'eclipse')
for dir in os.listdir(root):
path = os.path.join(root, dir)
processGroup(path)
Updated 01. December 2009: The script now figures out where your M2 repo is. Plus a minimum of documentation.
Posted by digulla