Глупый вопрос по мавену
От: Eugeny__ Украина  
Дата: 25.09.13 12:46
Оценка:
То-ли я где-то не дочитал в доке, то-ли не нашел, но простую вроде вещь хочу.

Мне в жарнике нужно разместить классы(всю структуру скомпиленную) не в корень, а в кастомную директорию. Ну, т.е. класс com.blabla.MyClass должен лежать в жарнике по пути /custom-folder/com/blabla/MyClass.class
При этом все из main/resources должно лежать по-умолчанию, т.е. без изменения путей. При этом сам байткод класса изменен не должен быть(ну вот такой класслоадер там кастомный в той штуке, под которую пишу). Изменить структуру не предлагать — это невозможно в принципе.
Как это сделать без заморочек?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re: Глупый вопрос по мавену
От: Blazkowicz Россия  
Дата: 25.09.13 12:57
Оценка: 4 (1)
Здравствуйте, Eugeny__, Вы писали:

E__>То-ли я где-то не дочитал в доке, то-ли не нашел, но простую вроде вещь хочу.

E__>Мне в жарнике нужно разместить классы(всю структуру скомпиленную) не в корень, а в кастомную директорию. Ну, т.е. класс com.blabla.MyClass должен лежать в жарнике по пути /custom-folder/com/blabla/MyClass.class
E__>При этом все из main/resources должно лежать по-умолчанию, т.е. без изменения путей. При этом сам байткод класса изменен не должен быть(ну вот такой класслоадер там кастомный в той штуке, под которую пишу). Изменить структуру не предлагать — это невозможно в принципе.
E__>Как это сделать без заморочек?
Если мавен чего-то не может, то проще это сделать дописав Ant скрипт. Либо перепаковать готовый jar этим скриптом, либо jar собирать антом.
Re: Глупый вопрос по мавену
От: avpavlov  
Дата: 25.09.13 14:19
Оценка: 2 (1)
Здравствуйте, Eugeny__, Вы писали:

E__>То-ли я где-то не дочитал в доке, то-ли не нашел, но простую вроде вещь хочу.


E__>Мне в жарнике нужно разместить классы(всю структуру скомпиленную) не в корень, а в кастомную директорию. Ну, т.е. класс com.blabla.MyClass должен лежать в жарнике по пути /custom-folder/com/blabla/MyClass.class

E__>При этом все из main/resources должно лежать по-умолчанию, т.е. без изменения путей. При этом сам байткод класса изменен не должен быть(ну вот такой класслоадер там кастомный в той штуке, под которую пишу). Изменить структуру не предлагать — это невозможно в принципе.
E__>Как это сделать без заморочек?

Мавен собирает jar при помощи плагина maven-assembly-plugin следуя дефолтным настройкам.

Дефолтное поведение можно поменять, создав свой дескриптор сборки

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_binaries
Re[2]: Глупый вопрос по мавену
От: avpavlov  
Дата: 25.09.13 14:20
Оценка:
A>Дефолтное поведение можно поменять, создав свой дескриптор сборки

A>http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html


Он выглядит огромным, но реально там можно писать только нужное.
Re[3]: Глупый вопрос по мавену
От: Eugeny__ Украина  
Дата: 25.09.13 15:30
Оценка:
Здравствуйте, avpavlov, Вы писали:


A>>Дефолтное поведение можно поменять, создав свой дескриптор сборки


A>>http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html


A>Он выглядит огромным, но реально там можно писать только нужное.


Попробовал с ним разобраться — он реально мощный, но нужно больше времени. Пока воспользовался советом Blazkowicz, и просто добавил пару антовских тасков в antrun, все получилось. Я просто не думал в эту сторону отчего-то, закопавшись в мавеновские маны.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[2]: Глупый вопрос по мавену
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 25.09.13 21:07
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Если мавен чего-то не может, то проще это сделать дописав Ant скрипт. Либо перепаковать готовый jar этим скриптом, либо jar собирать антом.

А когда таких вставок становится много, есть смысл мигрировать на gradle.
http://jvmmemory.com — простой способ настройки JVM
Re[4]: Глупый вопрос по мавену
От: avpavlov  
Дата: 26.09.13 08:08
Оценка: 4 (1)
чисто для истории

изменения в пом

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <id>default-jar</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/custom-jar.xml</descriptor>
                </descriptors>
                <appendAssemblyId>false</appendAssemblyId>
                <finalName>${project.build.finalName}</finalName>
            </configuration>
            <executions>
                    <execution>
                        <id>make-custom-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
            </executions>
        </plugin>
    </plugins>
</build>


custom-jar.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>custom</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>jar</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/classes</directory>
            <outputDirectory>/custom-folder</outputDirectory>
            <includes>
                <include>com/</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}/classes</directory>
            <outputDirectory>/</outputDirectory>
            <excludes>
                <exclude>com/</exclude>
            </excludes>
        </fileSet>
    </fileSets>
</assembly>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.