<html>
  <head>
    <title>Analysis of ${repo} (1970.01.01 00:00:00)</title>
    <style type='text/css'>
html, body { background: white; }
.pom { font-weight: bold; color: #7F0055; font-family: monospace; }
.dependency { font-weight: bold; color: #55007F; font-family: monospace; }
.version { font-weight: bold; color: #007F55; font-family: monospace; }
.file { font-weight: bold; color: #00557F; font-family: monospace; }
.files { font-style: italic; }
.padLeft { padding-left: 10px; }
tr:hover { background-color: #D0E0FF; }
.hidden { color: white; }
.error { font-weight: bold; color: red; }
.problem { border-left: 3px solid white; border-bottom: 1px solid #ccc; padding-left: 3px; }
.problem:hover { border-left-color: #cccccc; }
.ignoreKey { color: #ccc; }
</style>
  </head>
  <body>
    <h1>Analysis of ${repo} (1970.01.01 00:00:00)</h1>
    <p>Found 6 POM files</p>
    <p>Found 26 problems</p>
    <h2>Table of Contents</h2>
    <ul class='toc'>
      <li>
        <a href='#toc1'>Plug-ins Which Couldn't be Imported (2)</a>
      </li>
      <li>
        <a href='#toc2'>Plug-ins Without Manifest (2)</a>
      </li>
      <li>
        <a href='#toc3'>POMs with same ID but different version (1)</a>
      </li>
      <li>
        <a href='#toc4'>Problems With Dependencies (1)</a>
      </li>
      <li>
        <a href='#toc5'>Dependencies With Different Versions (2)</a>
      </li>
      <li>
        <a href='#toc6'>Missing Dependencies (12)</a>
      </li>
      <li>
        <a href='#toc7'>Snapshot Versions (2)</a>
      </li>
      <li>
        <a href='#toc8'>Path Problems (1)</a>
      </li>
      <li>
        <a href='#toc9'>Artifacts With Several Versions (1)</a>
      </li>
      <li>
        <a href='#toc10'>Multiple Nested JARs (1)</a>
      </li>
      <li>
        <a href='#toc11'>Missing Sources (3)</a>
      </li>
      <li>
        <a href='#poms'>6 POMs in the repository</a>
      </li>
    </ul>
    <h2 id='toc1'>Plug-ins Which Couldn't be Imported</h2>
    <p>2 times</p>
    <div class='problem'>
      <span class='message'>Error processing ${input}/plugins/file.txt: java.util.zip.ZipException: error in opening zip file</span>
    </div>
    <div class='problem'>
      <span class='message'>Error processing ${input}/plugins/notajar.jar: java.util.zip.ZipException: error in opening zip file</span>
    </div>
    <h2 id='toc2'>Plug-ins Without Manifest</h2>
    <p>2 times</p>
    <div class='problem'>
      <div class='ignoreKey'>MissingManifest E0003 nomanifest.jar</div>
      <span class='message'>Couldn't find MANIFEST.MF in ${input}/plugins/nomanifest.jar</span>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingManifest E0003 unpackedPlugin</div>
      <span class='message'>Couldn't find MANIFEST.MF in ${input}/plugins/unpackedPlugin</span>
    </div>
    <h2 id='toc3'>POMs with same ID but different version</h2>
    <p>1 time</p>
    <div class='problem'>
      <div class='ignoreKey'>ProblemSameKeyDifferentVersion org.eclipse.core:org.eclipse.core.runtime:3.5.0 org.eclipse.core:org.eclipse.core.runtime:3.6.0</div>There are two POMs with the same ID but different version:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>These POMs are used in:
      <ul>
        <li>
          <span class='pom'>org.eclipse.birt:org.eclipse.birt.core:2.6.1</span>
        </li>
      </ul>
    </div>
    <h2 id='toc4'>Problems With Dependencies</h2>
    <p>1 time</p>
    <div class='problem'>POM 
      <span class='pom'>junit.test:missing-version:1.0</span> 
      <span class='message'>Missing version in dependency</span> 
      <span class='dependency'>org.slf4j:slf4j-api:null</span>
    </div>
    <h2 id='toc5'>Dependencies With Different Versions</h2>
    <p>2 times</p>
    <div class='problem'>
      <div class='ignoreKey'>ProblemDifferentVersions null org.eclipse.equinox:org.eclipse.equinox.preferences</div>The dependency 
      <span class='dependency'>org.eclipse.equinox:org.eclipse.equinox.preferences</span> is referenced with 2 different versions:
      <ul>
        <li>Version "
          <span class='version'>[3.2.0,4.0.0)</span>" is used in:
          <ul>
            <li>
              <span class='pom'>org.eclipse.core:org.eclipse.core.runtime</span>:
              <span class='version'>3.5.0</span>
            </li>
          </ul>
        </li>
        <li>Version "
          <span class='version'>[3.3.0,4.0.0)</span>" is used in:
          <ul>
            <li>
              <span class='pom'>org.eclipse.core:org.eclipse.core.runtime</span>:
              <span class='version'>3.6.0</span>
            </li>
          </ul>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>ProblemDifferentVersions null junit:junit</div>The dependency 
      <span class='dependency'>junit:junit</span> is referenced with 2 different versions:
      <ul>
        <li>Version "
          <span class='version'>4.8.1</span>" is used in:
          <ul>
            <li>
              <span class='pom'>junit.test:different-version</span>:
              <span class='version'>1.0</span>
            </li>
          </ul>
        </li>
        <li>Version "
          <span class='version'>4.8.2</span>" is used in:
          <ul>
            <li>
              <span class='pom'>junit.test:missing-version</span>:
              <span class='version'>1.0</span>
            </li>
            <li>
              <span class='pom'>junit.test:snapshot-version</span>:
              <span class='version'>0.3.0-SNAPSHOT</span>
            </li>
          </ul>
        </li>
      </ul>
    </div>
    <h2 id='toc6'>Missing Dependencies</h2>
    <p>The following dependencies are used in POMs in the repository but they couldn't be found in it.</p>
    <p>12 times</p>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency ch.qos.logback:logback-classic</div>The dependency 
      <span class='dependency'>ch.qos.logback:logback-classic</span> is used in 1 POMs:
      <ul>
        <li>
          <span class='pom'>junit.test:missing-version:1.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency de.pdark:decentxml</div>The dependency 
      <span class='dependency'>de.pdark:decentxml</span> is used in 1 POMs:
      <ul>
        <li>
          <span class='pom'>junit.test:snapshot-version:0.3.0-SNAPSHOT</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency junit:junit</div>The dependency 
      <span class='dependency'>junit:junit</span> is used in 3 POMs:
      <ul>
        <li>
          <span class='pom'>junit.test:different-version:1.0</span>
        </li>
        <li>
          <span class='pom'>junit.test:missing-version:1.0</span>
        </li>
        <li>
          <span class='pom'>junit.test:snapshot-version:0.3.0-SNAPSHOT</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.core:org.eclipse.core.contenttype</div>The dependency 
      <span class='dependency'>org.eclipse.core:org.eclipse.core.contenttype</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.core:org.eclipse.core.jobs</div>The dependency 
      <span class='dependency'>org.eclipse.core:org.eclipse.core.jobs</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.equinox:org.eclipse.equinox.app</div>The dependency 
      <span class='dependency'>org.eclipse.equinox:org.eclipse.equinox.app</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.equinox:org.eclipse.equinox.common</div>The dependency 
      <span class='dependency'>org.eclipse.equinox:org.eclipse.equinox.common</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.equinox:org.eclipse.equinox.preferences</div>The dependency 
      <span class='dependency'>org.eclipse.equinox:org.eclipse.equinox.preferences</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.equinox:org.eclipse.equinox.registry</div>The dependency 
      <span class='dependency'>org.eclipse.equinox:org.eclipse.equinox.registry</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.eclipse.osgi:org.eclipse.osgi</div>The dependency 
      <span class='dependency'>org.eclipse.osgi:org.eclipse.osgi</span> is used in 2 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
        <li>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.6.0</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.mozilla.javascript:org.mozilla.javascript</div>The dependency 
      <span class='dependency'>org.mozilla.javascript:org.mozilla.javascript</span> is used in 1 POMs:
      <ul>
        <li>
          <span class='pom'>org.eclipse.birt:org.eclipse.birt.core:2.6.1</span>
        </li>
      </ul>
    </div>
    <div class='problem'>
      <div class='ignoreKey'>MissingDependency org.slf4j:slf4j-api</div>The dependency 
      <span class='dependency'>org.slf4j:slf4j-api</span> is used in 1 POMs:
      <ul>
        <li>
          <span class='pom'>junit.test:missing-version:1.0</span>
        </li>
      </ul>
    </div>
    <h2 id='toc7'>Snapshot Versions</h2>
    <p>Release Repositories should not contain SNAPSHOTs</p>
    <p>2 times</p>
    <div class='problem'>The POM 
      <span class='pom'>junit.test:snapshot-version:0.3.0-SNAPSHOT</span> uses a snapshot version
    </div>
    <div class='problem'>The dependency 
      <span class='dependency'>de.pdark:decentxml:1.4-SNAPSHOT</span> in POM 
      <span class='pom'>junit.test:snapshot-version:0.3.0-SNAPSHOT</span> uses a snapshot version
    </div>
    <h2 id='toc8'>Path Problems</h2>
    <p>These POMs are not where they should be</p>
    <p>1 time</p>
    <div class='problem'>The path for the POM 
      <span class='pom'>junit.test:different-version:1.0</span> should be
      <span class='file'>${repo}/junit/test/different-version/1.0/different-version-1.0.pom</span> but was 
      <span class='file'>${repo}/junit/test/different-versions/1.0/different-versions-1.0.pom</span>
    </div>
    <h2 id='toc9'>Artifacts With Several Versions</h2>
    <p>1 time</p>
    <div class='problem'>
      <div class='ignoreKey'>TwoVersionsProblem E0001 org.eclipse.orbit:orbit.org.apache.lucene 1.9.1 2.9.1</div>
      <span class='message'>The artifact org.eclipse.orbit:orbit.org.apache.lucene exists with several versions: 1.9.1 2.9.1</span>
    </div>
    <h2 id='toc10'>Multiple Nested JARs</h2>
    <p>1 time</p>
    <div class='problem'>
      <div class='ignoreKey'>MultipleNestedJarsProblem W0004 org/eclipse/birt/org.eclipse.birt.report.data.oda.jdbc.dbprofile/3.7.0.v20110603/org.eclipse.birt.report.data.oda.jdbc.dbprofile-3.7.0.v20110603.jar .,src</div>
      <span class='message'>Found multiple nested JARs in .../m2repo/org/eclipse/birt/org.eclipse.birt.report.data.oda.jdbc.dbprofile/3.7.0.v20110603/org.eclipse.birt.report.data.oda.jdbc.dbprofile-3.7.0.v20110603.jar</span>
    </div>
    <h2 id='toc11'>Missing Sources</h2>
    <p>3 times</p>
    <div class='problem'>
      <p>Missing sources for 3 artifacts</p>
      <ul>
        <li>
          <span class='ignoreKey'>MissingSources </span>
          <span class='pom'>junit.test:missing-version:1.0</span>
        </li>
        <li>
          <span class='ignoreKey'>MissingSources </span>
          <span class='pom'>junit.test:snapshot-version:0.3.0-SNAPSHOT</span>
        </li>
        <li>
          <span class='ignoreKey'>MissingSources </span>
          <span class='pom'>org.eclipse.core:org.eclipse.core.runtime:3.5.0</span>
        </li>
      </ul>
    </div>
    <h2 id='poms'>6 POMs in the repository</h2>
    <table border='0' cellspacing='0' cellpadding='0'>
      <tr>
        <th>Group ID</th>
        <th>Artifact ID + Version</th>
        <th>Files</th>
      </tr>
      <tr>
        <td>junit.test<span class='hidden'>:</span></td>
        <td>
          <span class='pom'>different-version</span><span class='hidden'>:</span>
          <span class='version'>1.0</span>
        </td>
        <td class='padLeft'>
          <span class='error'>No files found; check problems above</span>
        </td>
      </tr>
      <tr>
        <td></td>
        <td>
          <span class='pom'>missing-version</span><span class='hidden'>:</span>
          <span class='version'>1.0</span>
        </td>
        <td class='padLeft'>
          <span class='files'> pom</span>
        </td>
      </tr>
      <tr>
        <td></td>
        <td>
          <span class='pom'>snapshot-version</span><span class='hidden'>:</span>
          <span class='version'>0.3.0-SNAPSHOT</span>
        </td>
        <td class='padLeft'>
          <span class='files'> pom</span>
        </td>
      </tr>
      <tr>
        <td>org.eclipse.birt<span class='hidden'>:</span></td>
        <td>
          <span class='pom'>org.eclipse.birt.core</span><span class='hidden'>:</span>
          <span class='version'>2.6.1</span>
        </td>
        <td class='padLeft'>
          <span class='files'> jar pom sources</span>
        </td>
      </tr>
      <tr>
        <td>org.eclipse.core<span class='hidden'>:</span></td>
        <td>
          <span class='pom'>org.eclipse.core.runtime</span><span class='hidden'>:</span>
          <span class='version'>3.6.0</span>
        </td>
        <td class='padLeft'>
          <span class='files'> jar pom sources</span>
        </td>
      </tr>
    </table>
    <div style='height: 20em;'>&nbsp;</div>
  </body>
</html>