Maven - java.lang.StackOverflowError

0

Witam

Do budowania swojego wynikowego jara używam maven-assembly-plugin.

    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/assemble/jar.xml</descriptor>
                    </descriptors>
                    <archive>
                        <manifest>
                            <mainClass>tu moja klasa main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

I mój jar.xml :

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <unpack>true</unpack>
            <scope>compile</scope>
        </dependencySet>
    </dependencySets>

</assembly>

Przeważnie wszystko się buduje ok ale czasami z niewiadomych powodów dostaje :

Trace
java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(SingleByteEncoder.java:91)
at sun.nio.cs.SingleByteEncoder.encodeLoop(SingleByteEncoder.java:130)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
at java.io.PrintStream.newLine(PrintStream.java:495)
at java.io.PrintStream.println(PrintStream.java:757)
at org.codehaus.plexus.logging.console.ConsoleLogger.info(ConsoleLogger.java:41)
at org.codehaus.plexus.logging.AbstractLogger.info(AbstractLogger.java:56)
at org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:464)

Dzieje się tak wtedy gdy podczas budowania jara dodawane są klasy z zależności i leci ciąg np.

org/apache/commons/configuration/resolver/EntityRegistry.class already added, skipping
org/apache/commons/configuration/resolver/EntityResolverSupport.class already added, skipping
org/apache/commons/configuration/StrictConfigurationComparator.class already added, skipping
org/apache/commons/configuration/SubnodeConfiguration.class already added, skipping
.
.
.

i w którymś momencie wywala - czasami nie wywala i buduje się do końca a czasami w losowym momencie wywala. Jakieś pomysły? Jak zobić by klasy które wcześniej dodał nie starał się dodawać ponownie?

Pozdrawiam

0

Ustaw w systemie MAVEN_OPTS="-Xmx512m -Xms128m". Problem polega na tym, że czasami JVM odpali GC i ten zdąży wyczyścić śmiecie po użytych już pluginach, a czasami nie. Maven fajny, ale pamięcożerny jest. No i na koniec pytanie Maven 3 czy 2.2?

0

Mam już ustawione -Xms256M -Xmx1024M -XX:MaxPermSize=512M

A wersja 2.2.1

Dalej nie wiem dlaczego on chce dwa razy umieszczać te klasy z zależności do wynikowego jara - raz mu nie starczy?

0

A czy przez przypadek ten plugin nie ma automatycznie odpalanego zadania single w fazie package?

0

Chyba nie bo jak usunę to nie dołącza klas z zależności do jata

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0