appassembler и длинный путь к классам - PullRequest
4 голосов
/ 26 марта 2010

Я использую maven appassembler для создания своей сборки. Мой путь к классу слишком длинный, и я получаю «Строка ввода слишком длинная». здесь предлагает использовать платформу загрузчика Windows, но я вынужден использовать Java Service Wrapper. В любом случае, я могу использовать подстановочный символ класса java6 и обертку службы java?

Ответы [ 7 ]

2 голосов
/ 28 апреля 2015

Вы пробовали:

<useWildcardClassPath>true</useWildcardClassPath>

Это решило проблему для меня, однако, если вы этого еще не сделали, вам также необходимо убедиться, что вы используете:

<repositoryLayout>flat</repositoryLayout>
1 голос
/ 24 июня 2013

Вы также можете попробовать сгладить структуру каталогов каталога репозитория (т.е. lib). По умолчанию appassembler сохраняет глубокую структуру каталогов, которая может добавить ненужную длину к пути к классам.

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>appassembler-maven-plugin</artifactId>
      <version>1.3.1</version>
      <configuration>
        <programs>
          <program>
            <mainClass>com.mycompany.app.MyApp</mainClass>
            <name>runMyApp</name>
          </program>
        </programs>
        <repositoryLayout>flat</repositoryLayout>
      </configuration>
    </plugin>
  </plugins>
</build>
1 голос
/ 12 апреля 2010

Я бы предложил оставить сообщение об ошибке в http://jira.codehaus.org/browse/MAPPASM для ее устранения. Я написал интеграцию JSW и знаю, что она требует немного больше работы.

1 голос
/ 10 апреля 2010

Кажется, что ответ «Нет», без написания плагина или расширения существующего плагина, который не является «ответом» на исходный вопрос.

0 голосов
/ 01 октября 2018

В командной строке Windows максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символов .

Так что, если у вашего проекта слишком много зависимостей, он будет генерировать длинный путь к классам.

Чтобы преодолеть эту ситуацию, maven-appassembler предоставил опцию

Добавьте эти две строки в разделе конфигурации

<configuration>
    <repositoryLayout>flat</repositoryLayout>
    <useWildcardClassPath>true</useWildcardClassPath>
</configuration>

Документация для этих двух вариантов: ( документация )

useWildcardClassPath :

Иногда бывает, что у вас много зависимостей, что означает очень длинный путь к классам и становится слишком длинным (в частности, на платформах на базе Windows). Этот вариант может помочь в такой ситуации. Если вы активируете эту опцию, ваш classpath содержит только подстановочный знак classpath (REPO / *). Но имейте в виду, что это работает только в сочетании с Java 1.6 и выше и с репозиторием Layout flat.

repositoryLayout :

Макет сгенерированного репозитория Maven. Поддерживаемые типы - «по умолчанию» (Maven2) | "Наследие" (Maven1) | «квартира» (квартира lib / style). Стиль "legacy" поддерживается только в том случае, если вы работаете в Maven 2.2.1 и более ранних версиях.

0 голосов
/ 11 октября 2013

Я подал вопрос JIRA здесь:

http://jira.codehaus.org/browse/MAPPASM-203

Вы можете пойти и проголосовать за него.

0 голосов
/ 01 апреля 2010

Как длинный выстрел ...

Никогда не работая с JSW, возможно, вы могли бы создать свой собственный плагин сборки на основе кода http://maven.apache.org/plugins/maven-assembly-plugin/source-repository.html и использовать его вместо этого.

...