Как я могу указать mainClass в манифесте с помощью minijar-maven-plugin? - PullRequest
0 голосов
/ 01 августа 2010

Я использую плагин minijar-maven-plugin, чтобы уменьшить размер фляги jar-with-dependencies, но мне нужно указать mainClass, как это легко сделать с помощью плагина maven сборка. Как я могу указать mainClass в манифесте, все еще используя плагин minijar?

Моя конфигурация мини-бара используется по умолчанию:

    <plugin>
        <artifactId>minijar-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>ueberjar</goal>
                </goals>
                <configuration>
                    <includeArtifact>true</includeArtifact>
                    <stripUnusedClasses>false</stripUnusedClasses>
                    <includeDependencies>
                        <param>org.vafer:dependency</param>
                    </includeDependencies>
                    <includeDependenciesInRelocation>
                        <param>org.vafer:dependency</param>
                    </includeDependenciesInRelocation>
                </configuration>
            </execution>
        </executions>
    </plugin>

Я могу указать основной класс в модуле сборки maven, используя:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.chheng.Main</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>

Ответы [ 2 ]

3 голосов
/ 06 августа 2010

Вы должны попробовать плагин Maven Shade. Он лучше работает с метаданными, а также заботится о встраивании зависимостей.

Я устарел в плагине minijar и вместо него добавил поддержку для той же оптимизации для плагина maven shade.

Смотрите / голосуйте за эту проблему , чтобы применить ее.

0 голосов
/ 01 августа 2010

Это было запрошено - смотрите этот исполняемый файл uberjar thread и MOJO-852 - но все еще не поддерживается.И учитывая, что эта проблема открыта уже более 3 лет, я не ожидаю быстрого разрешения (если вы не отправите патч).


Я не очень хорошо знаю плагин minijar,никогда не использовал его на самом деле ... но что произойдет, если вы сконфигурируете плагин jar для генерации манифеста с записью основного класса для основного jar?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <!--addClasspath>true</addClasspath-->
        <mainClass>my.main.Class</mainClass>
        </manifest>
    </archive>
  </configuration>
</plugin>
...