geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <da...@coredevelopers.net>
Subject Re: eclipse .classpath fixer-upper for incubator-geronimo
Date Thu, 12 Feb 2004 21:42:40 GMT

On Thursday, February 12, 2004, at 01:35 PM, Patrick Mueller wrote:

> I've got a little .classpath (and .project) fixer-upper for the  
> incubator-geronimo project if you happen to want to suck it into  
> eclipse.
>
> Attached as maven-fixup.py (yes, written in Python; baby steps .. baby  
> steps ... the good news is the processing is fairly simple to gen  
> this, so it can probably be done in maven/jelly, I just don't know how  
> yet).
>
> I've also attached the generated .classpath file and .project file.
>
> Not perfect, but I'm not sure if it can be in eclipse anyway.  You'll  
> still red X's in eclipse for:
>
> - sandbox/twiddle/src/java
>
> - sandbox/webdav/src/java
>
> - some of the xmlbeans stuff; this is because the gen'd classes are  
> duplicated across multiple source folders; eclipse doesn't like this;  
> I think source folders in eclipse can be filtered, so a smarter  
> version of the tool could filter the dups away; but this might not  
> work outside of eclipse, if those classes are actually required by the  
> runtime.

they aren't, and this is a problem in idea also.  I need  to figure out  
how to manipulate the xmlbeans plugin's classpath so the duplicates  
don't get generated in the first place.

david jencks

>
> I HAVE NOT VERIFIED THAT THE SERVER CAN RUN AFTER COMPILING THE  
> CLASSES THIS WAY.
>
> That's not my intent (yet); I just wanted to use sexy eclipse browsing  
> to peruse the geronimo universe, without seeing compiler errors all  
> over the place.
>
> Other eclipse notes:
>
> - make sure you turn on 1.4 level compiler compliance; assert is used  
> throughout geronimo, and the default compiler settings essentially  
> mark these as compiler errors
>
> - you'll want to turn off warnings for unused imports, and some other  
> things like static members accessed in a non-static fashion sort of  
> thing.  Cuts way back on the number of warnings.
>
> - you'll want to filter referenced libraries off in the Java  
> perspective's navigator; there are 32 source folders, and 41  
> referenced libraries - the list of 'things' is just annoyingly long  
> and you can live without the referenced libraries.
>
> --  
> Patrick Mueller
> pmuellr@yahoo.com
>
> #!/usr/bin/python
>
> import os
> import sys
> import string
>
> import xml.dom
> import xml.dom.minidom
>
> mavenRepo = os.path.expanduser("~/.maven/repository")
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
> def getProjectDirs(root, path, result):
>
>     rootPath = "%s/%s" % (root,path)
>
>     entries = os.listdir(rootPath)
>
>     for entry in entries:
>         rootPathEntry = "%s/%s" % (rootPath,entry)
>         pathEntry     = "%s/%s" % (path,entry)
>
>         if (os.path.isdir(rootPathEntry)):
>             getProjectDirs(root,pathEntry,result)
>             continue
>
>         if (entry == "project.xml"):
>             srcJavaPath = "%s/src/java" % rootPath
>             if (os.path.exists(srcJavaPath)):
>                 result.append(os.path.normpath(path).replace("\\","/"))
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
> def getXmlBeansDirs(root, path, result):
>
>     rootPath = "%s/%s" % (root,path)
>
>     entries = os.listdir(rootPath)
>
>     for entry in entries:
>         rootPathEntry = "%s/%s" % (rootPath,entry)
>         pathEntry     = "%s/%s" % (path,entry)
>
>         if (os.path.exists("%s/%s/target/xmlbeans" %  
> (rootPath,entry))):
>             result.append(os.path.normpath("%s/%s" %  
> (path,entry)).replace("\\","/"))
>
>         if (os.path.isdir(rootPathEntry)):
>             getXmlBeansDirs(root,pathEntry,result)
>             continue
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
> def getXmlText(element,subElementName):
>
>     subElements = element.getElementsByTagName(subElementName)
>     if (len(subElements) == 0): return ""
>
>     result      = ""
>     subElement  = subElements[0]
>
>     for child in subElement.childNodes:
>         if (child.nodeType == xml.dom.Node.TEXT_NODE):
>             result = result + child.data
>
>     return result
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
> def getMavenDependencies(dom,projectDir,mavenDependencies):
>
>     #  
> ~/.maven/repository/commons-logging/jars/commons-logging-1.0.3.jar
>     # ${repo}/${groupId}/${type}s/${artifactId}-${version}.${type}
>
> #   print "Dependencies for %s" % projectDir
>
>     dependencyElements = dom.getElementsByTagName("dependency")
>     for dependencyElement in dependencyElements:
>         elementId         = getXmlText(dependencyElement,"id")
>         elementVersion    = getXmlText(dependencyElement,"version")
>         elementGroupId    = getXmlText(dependencyElement,"groupId")
>         elementArtifactId = getXmlText(dependencyElement,"artifactId")
>         elementType       = getXmlText(dependencyElement,"type")
>         elementUrl        = getXmlText(dependencyElement,"url")
>
>         if (elementType == ""): elementType = "jar"
>
> #       print "   dependency: "
> #       print "      id:         %s" % elementId
> #       print "      version:    %s" % elementVersion
> #       print "      groupId:    %s" % elementGroupId
> #       print "      artifactId: %s" % elementArtifactId
>
>         if (elementGroupId != ""):
>             testFile = "%s/%ss/%s-%s.%s" %  
> (elementGroupId,elementType,elementArtifactId,elementVersion,elementTyp 
> e)
>         elif (elementArtifactId != ""):
>             testFile = "%s/%ss/%s-%s.%s" %  
> (elementId,elementType,elementArtifactId,elementVersion,elementType)
>         elif (-1 != elementId.find("+")):
>             repoDir  = elementId.split("+")[0]
>             repoName = elementId.replace("+","-")
>             testFile = "%s/%ss/%s-%s.%s" %  
> (repoDir,elementType,repoName,elementVersion,elementType)
>         else:
>             testFile = "%s/%ss/%s-%s.%s" %  
> (elementId,elementType,elementId,elementVersion,elementType)
>
>         testAbsFile = "%s/%s" % (mavenRepo,testFile)
>
>         if (elementVersion == "DEV"):
> #           print "Skipping %s for %s since it's probably a  
> subproject" % (testFile,projectDir)
>             pass
>
>         elif (os.path.exists(testAbsFile)):
>             if (testFile not in mavenDependencies):
>                 mavenDependencies.append(testFile)
>
>         else:
>             print "Unable to find file in maven repo: %s for %s" %  
> (testFile,projectDir)
>             print "   dependency: for %s" % projectDir
>             print "      id:         %s" % elementId
>             print "      version:    %s" % elementVersion
>             print "      groupId:    %s" % elementGroupId
>             print "      artifactId: %s" % elementArtifactId
>             print "      url:        %s" % elementUrl
>             print
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
>
> thisFile = sys.argv[0]
>
> igPath = "%s/../incubator-geronimo" % os.path.dirname(thisFile)
>
> projectDirs       = []
> xmlBeansDirs      = []
> mavenDependencies = []
> projectDoms       = {}
>
> getProjectDirs(igPath,".",projectDirs)
> getXmlBeansDirs(igPath,".",xmlBeansDirs)
>
> #print "Found the following project dirs:"
> #for projectDir in projectDirs:
> #   print "   %s" % projectDir
> #print
>
> for projectDir in projectDirs:
>     dom = xml.dom.minidom.parse("%s/%s/project.xml" %  
> (igPath,projectDir))
>     projectDoms[projectDir] = dom
>
>     getMavenDependencies(dom,projectDir,mavenDependencies)
>
> classpathFileName = "%s/.classpath" % igPath
>
> print "Rewriting %s" % classpathFileName
>
> classpathFile = open(classpathFileName,"w")
>
> print >>classpathFile, '<?xml version="1.0" encoding="UTF-8"?>'
> print >>classpathFile, '<!-- generated by %s -->' %  
> os.path.basename(thisFile)
> print >>classpathFile, '<classpath>'
> print >>classpathFile, '    <classpathentry kind="con"  
> path="org.eclipse.jdt.launching.JRE_CONTAINER"/>'
>
> for projectDir in projectDirs:
>     print "Adding source folder for %s" % projectDir
>     print >>classpathFile, '    <classpathentry kind="src"  
> path="%s/src/java" out="%s/target/classes" />' %  
> (projectDir,projectDir)
>
> for xmlBeansDir in xmlBeansDirs:
>     print "Adding source folder for %s (xmlbeans)" % xmlBeansDir
>     print >>classpathFile, '    <classpathentry kind="src"  
> path="%s/target/xmlbeans" out="%s/target/classes" />' %  
> (xmlBeansDir,xmlBeansDir)
>
> for mavenDependency in mavenDependencies:
>     print "Adding jar reference for %s" % mavenDependency
>     print >>classpathFile, '    <classpathentry kind="var"  
> path="MAVEN_REPO/%s"/>' % mavenDependency
>
> print >>classpathFile, '</classpath>'
>
> classpathFile.close()
>
> #<?xml version="1.0" encoding="UTF-8"?>
> #<classpath>
> #   <classpathentry kind="src" path="specs/ejb/src/java"  
> out="specs/ejb/target" />
> #   <classpathentry kind="src" path="specs/jta/src/java"  
> out="specs/jta/target" />
> #   <classpathentry kind="src" path="specs/j2ee-connector/src/java"  
> out="specs/j2ee-connector/target" />
> #   <classpathentry kind="src" path="specs/j2ee-deployment/src/java"  
> out="specs/j2ee-deployment/target" />
> #   <classpathentry kind="con"  
> path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
> #</classpath>
>
> #--------------------------------------------------------------------
> #
> #--------------------------------------------------------------------
>
> projectFileName = "%s/.project" % igPath
>
> print "Rewriting %s" % projectFileName
>
> projectFile = open(projectFileName,"w")
>
> print >>projectFile, '<?xml version="1.0" encoding="UTF-8"?>'
> print >>projectFile, '<!-- generated by %s -->' %  
> os.path.basename(thisFile)
> print >>projectFile, '<projectDescription>'
> print >>projectFile, '  <name>incubator-geronimo</name>'
> print >>projectFile, '  <comment></comment>'
> print >>projectFile, '  <projects>'
> print >>projectFile, '  </projects>'
> print >>projectFile, '  <buildSpec>'
> print >>projectFile, '      <buildCommand>'
> print >>projectFile, '           
> <name>org.eclipse.jdt.core.javabuilder</name>'
> print >>projectFile, '          <arguments>'
> print >>projectFile, '          </arguments>'
> print >>projectFile, '      </buildCommand>'
> print >>projectFile, '  </buildSpec>'
> print >>projectFile, '  <natures>'
> print >>projectFile, '       
> <nature>org.eclipse.jdt.core.javanature</nature>'
> print >>projectFile, '  </natures>'
> print >>projectFile, '</projectDescription>'
>
> projectFile.close()
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- generated by maven-fixup.py -->
> <classpath>
>     <classpathentry kind="con"  
> path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
>     <classpathentry kind="src" path="modules/clustering/src/java"  
> out="modules/clustering/target/classes" />
>     <classpathentry kind="src" path="modules/common/src/java"  
> out="modules/common/target/classes" />
>     <classpathentry kind="src" path="modules/connector/src/java"  
> out="modules/connector/target/classes" />
>     <classpathentry kind="src" path="modules/console-web/src/java"  
> out="modules/console-web/target/classes" />
>     <classpathentry kind="src" path="modules/core/src/java"  
> out="modules/core/target/classes" />
>     <classpathentry kind="src" path="modules/deployment/src/java"  
> out="modules/deployment/target/classes" />
>     <classpathentry kind="src" path="modules/jetty/src/java"  
> out="modules/jetty/target/classes" />
>     <classpathentry kind="src" path="modules/kernel/src/java"  
> out="modules/kernel/target/classes" />
>     <classpathentry kind="src"  
> path="modules/maven-xmlbeans-plugin/src/java"  
> out="modules/maven-xmlbeans-plugin/target/classes" />
>     <classpathentry kind="src" path="modules/remoting/src/java"  
> out="modules/remoting/target/classes" />
>     <classpathentry kind="src" path="modules/security/src/java"  
> out="modules/security/target/classes" />
>     <classpathentry kind="src" path="modules/transaction/src/java"  
> out="modules/transaction/target/classes" />
>     <classpathentry kind="src" path="sandbox/activation/src/java"  
> out="sandbox/activation/target/classes" />
>     <classpathentry kind="src" path="sandbox/explorer/src/java"  
> out="sandbox/explorer/target/classes" />
>     <classpathentry kind="src" path="sandbox/javamail/src/java"  
> out="sandbox/javamail/target/classes" />
>     <classpathentry kind="src" path="sandbox/mail/src/java"  
> out="sandbox/mail/target/classes" />
>     <classpathentry kind="src" path="sandbox/twiddle/src/java"  
> out="sandbox/twiddle/target/classes" />
>     <classpathentry kind="src" path="sandbox/webdav/src/java"  
> out="sandbox/webdav/target/classes" />
>     <classpathentry kind="src" path="specs/ejb/src/java"  
> out="specs/ejb/target/classes" />
>     <classpathentry kind="src" path="specs/j2ee-connector/src/java"  
> out="specs/j2ee-connector/target/classes" />
>     <classpathentry kind="src" path="specs/j2ee-deployment/src/java"  
> out="specs/j2ee-deployment/target/classes" />
>     <classpathentry kind="src" path="specs/j2ee-jacc/src/java"  
> out="specs/j2ee-jacc/target/classes" />
>     <classpathentry kind="src" path="specs/j2ee-management/src/java"  
> out="specs/j2ee-management/target/classes" />
>     <classpathentry kind="src" path="specs/jms/src/java"  
> out="specs/jms/target/classes" />
>     <classpathentry kind="src" path="specs/jsp/src/java"  
> out="specs/jsp/target/classes" />
>     <classpathentry kind="src" path="specs/jta/src/java"  
> out="specs/jta/target/classes" />
>     <classpathentry kind="src" path="specs/servlet/src/java"  
> out="specs/servlet/target/classes" />
>     <classpathentry kind="src"  
> path="modules/connector/target/xmlbeans"  
> out="modules/connector/target/classes" />
>     <classpathentry kind="src"  
> path="modules/deployment/target/xmlbeans"  
> out="modules/deployment/target/classes" />
>     <classpathentry kind="src" path="modules/jetty/target/xmlbeans"  
> out="modules/jetty/target/classes" />
>     <classpathentry kind="src" path="modules/security/target/xmlbeans"  
> out="modules/security/target/classes" />
>     <classpathentry kind="src" path="specs/schema/target/xmlbeans"  
> out="specs/schema/target/classes" />
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/mx4j/jars/mx4j-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-lang/jars/commons-lang-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-collections/jars/commons-collections- 
> SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-jexl/jars/commons-jexl-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/log4j/jars/log4j-1.2.8.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/mx4j/jars/mx4j-jmx-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/xmlbeans/jars/xbean-apache-1.0-DEV.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/cglib/jars/cglib-full-2.0-RC2.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/concurrent/jars/concurrent-1.3.2.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/regexp/jars/regexp-1.3-dev.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-jxpath/jars/commons-jxpath-1.1.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/xerces/jars/xercesImpl-2.6.0.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/xml-apis/jars/xml-apis-1.0.b2.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/dom4j/jars/dom4j-1.4.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/xml-commons-resolver/jars/xml-commons-resolver- 
> 1.1.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-cli/jars/commons-cli-1.0.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/jetty/jars/org.mortbay.jetty-5.0.beta0.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/jasper-compiler-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/jasper-runtime-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-el/jars/commons-el-1.0.jar"/>
>     <classpathentry kind="var" path="MAVEN_REPO/ant/jars/ant-1.5.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/xerces/jars/xmlParserAPIs-2.2.1.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/hsqldb/jars/hsqldb-1.7.1.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/groovy/jars/groovy-1.0-alpha-1.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/asm/jars/asm-1.3.4.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/asm/jars/asm-util-1.3.4.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/classworlds/jars/classworlds-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/castor/jars/castor-0.9.5.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils- 
> SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/jetty/jars/jetty-SNAPSHOT.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/catalina-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/catalina-optional-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/naming-common-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/naming-resources-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/servlets-common-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/servlets-default-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/servlets-webdav-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/tomcat/jars/tomcat-util-5.0.16.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/mockobjects/jars/mockobjects-jdk1.4-j2ee1.3- 
> 0.09.jar"/>
>     <classpathentry kind="var"  
> path="MAVEN_REPO/mockobjects/jars/mockobjects-core-0.09.jar"/>
> </classpath>
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- generated by maven-fixup.py -->
> <projectDescription>
>   <name>incubator-geronimo</name>
>   <comment></comment>
>   <projects>
>   </projects>
>   <buildSpec>
>       <buildCommand>
>           <name>org.eclipse.jdt.core.javabuilder</name>
>           <arguments>
>           </arguments>
>       </buildCommand>
>   </buildSpec>
>   <natures>
>       <nature>org.eclipse.jdt.core.javanature</nature>
>   </natures>
> </projectDescription>


Mime
View raw message