Search code examples
javamavenjettymaven-cargo

Cargo Maven Plugin unable to download and unpack Jetty zip due to "Negative seek offset"


  1. I am facing the below error while running my integration tests:

    Failed to execute goal org.codehaus.cargo:cargo-maven2- 
    plugin:1.1.3:start (start-container) on project <project-name>:
    Execution start-container of goal org.codehaus.cargo:cargo-maven2-
    plugin:1.1.3:start failed: Error while expanding 
    <project>/target/downloads/jetty-6.1.26.zip
    [ERROR] java.io.IOException: Negative seek offset
    

Although, if I just do mvn jetty:run, it does start the server. Did anybody face similar issue, how did you solve it?

here is the configuration I have :

    <plugin>
            <!-- http://cargo.codehaus.org/Maven2+Plugin+Reference+Guide -->
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.1.3</version>
            <executions>
                <execution>
                    <id>start-container</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>start</goal>
                    </goals>
                </execution>
                <execution>
                    <id>stop-container</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <wait>false</wait>
                <container>
                    <containerId>jetty6x</containerId>
                    <!-- The 'embedded' container does not seem to support 
                        setting JNDI values through a jetty-env.xml file, see http://jira.codehaus.org/browse/CARGO-861 
                        and http://jira.codehaus.org/browse/CARGO-862 for more information. For now, 
                        we'll use the 'installed' container which works fine, it is just slightly 
                        slower than the embedded version since it is a large distribution (25 mb) 
                        that must be downloaded. -->
                    <type>installed</type>
                    <zipUrlInstaller>
                        <url>http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip</url>
                        <downloadDir>${project.build.directory}/downloads</downloadDir>
                        <extractDir>${project.build.directory}/extracts</extractDir>
                    </zipUrlInstaller>
                    <systemProperties>
                        <java.io.tmpdir>target/tmp</java.io.tmpdir>
                        <!-- These "jetty6.*" system properties are used 
                            to set values in the jetty-env.xml file. -->
                        <jetty6.context>Project-NAME</jetty6.context>
                        <jetty6.warFile>${project.build.directory}/project-war.war</jetty6.warFile>
                    </systemProperties>
                    <output>${project.build.directory}/cargo-container.log</output>
                    <log>${project.build.directory}/cargo.log</log>
                    <dependencies>
                        <dependency>
                            <location>${project.basedir}/src/test/keystores/sun/${keystoreType}</location>
                        </dependency>
                        <dependency>
                            <groupId>com.oracle</groupId>
                            <artifactId>ojdbc6</artifactId>
                        </dependency>
                    </dependencies>
                </container>
                <configuration>
                    <home>${project.build.directory}/jetty6x/container</home>
                    <!-- See http://cargo.codehaus.org/Configuration+properties 
                        for possible properties. -->
                    <properties>
                        <cargo.servlet.port>9090</cargo.servlet.port>
                        <cargo.logging>low</cargo.logging>
                        <!-- Enable to debug the server, see http://cargo.codehaus.org/Debugging 
                            for more information. -->
                       <!--  <cargo.jvmargs> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 
                            -Xnoagent -Djava.compiler=NONE </cargo.jvmargs> -->
                    </properties>
                    <configfiles>
                        <configfile>
                            <file>${project.basedir}/src/test/keystores/sun/${keystoreType}/jetty-env.xml</file>
                            <todir>contexts</todir>
                            <tofile>project-Name.xml</tofile>
                        </configfile>
                    </configfiles>
                    <deployables>
                        <deployable>
                            <groupId><project-NAME></groupId>
                            <artifactId>project-war</artifactId>
                            <type>war</type>
                            <properties>
                                <context>project-Name</context>
                            </properties>
                        </deployable>
                    </deployables>
                </configuration>
            </configuration>
        </plugin>
  1. I know codehaus is going down, eventually will have to update. Any suggestions so to what would be a lightweight server to deploy the war and run integration tests as a client?

Solution

  • The fundamental reason:

    Codehaus.org is a dead website. It will be 100% offline on May 17, 2015.

    The time has come to end the era of Codehaus.

    All Codehaus services will be terminated progressively until May 17th 2015

    With increasing diversity in opensource hosting platforms like Github and Bitbucket - who are meeting the needs of 1000s of projects - it makes sense to end the opensource hosting services of Codehaus.

    Codehaus has operated at a loss for several years now (we're not powered by venture capital), and can not compete with the army of developers and integrated product offerings that are now commonplace.

    The platform was to be terminated at the end of February 2015, however SonarQube has graciously offered to sponsor Codehaus for a few months to aid in the transition.

    Your URL access to dist.codehaus.org is failing.

    <url>http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip</url>
    

    Other Important Notes:

    • There have been 25 releases of cargo-maven2-plugin since version 1.1.3, consider upgrading.
    • Cargo has moved off of codehaus as well, find them at codehaus-cargo.github.io now.
    • Don't use Jetty 6, its EOL (End of Life) as of 2010.
    • There will not be a replacement download location for Jetty 5 and Jetty 6 binaries that were once hosted on dist.codehaus.org.
    • Don't use Jetty 7 or Jetty 8 either, those are EOL as of 2014.
    • Jetty 9 is the only stable and supported series of Jetty at this point in time (May 2015).