Обязательно ли иметь файлы .java в / src / main / java при компиляции с maven? - PullRequest
4 голосов
/ 28 июля 2010

Я пытался преобразовать проект в maven ... он имеет файлы .java в другом месте, чем / src / main / java, когда я запускаю maven install, все файлы (.hbm, .xml), кромеэти .class встречаются в моем банке.

Это часть сборки из pom.xml:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes> 
        </resource>
    </resources>

    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
                <fork>true</fork>
                <compilerVersion>1.5</compilerVersion>
                <compilerArguments>
                    <encoding>UTF-8</encoding>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>  
</build>

Используя приведенный выше код, файлы .class отсутствуют в моем банке ... и нетсообщения об ошибках отображаются на консоли, необходимо ли перемещать их в / src / main / java структуру пакета?

Кроме того, что может быть причиной такого поведения, некоторые отсутствующие зависимости?

Я сделал изменение, переместив их в src / main / java, и у меня появилось несколько исключений на консоли, но я все еще в замешательстве, если я «должен» добавить их в эту структуру «src / main / java»...

Пожалуйста, дайте мне представление об этом ...

Спасибо

Ответы [ 5 ]

9 голосов
/ 28 июля 2010

Вы можете настроить исходный каталог таким же образом, как ресурсы:

<build>
    <sourceDirectory>${basedir}/src</sourceDirectory>
    <resources>
        <resource>
            <directory>${basedir}/src</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
</build>
5 голосов
/ 30 июля 2010

Это не является строго необходимым - его можно настраивать - но Maven поставляется с стандартизированным макетом проекта , и настоятельно рекомендуется принять его, как и другие соглашения Maven (не бороться с Maven, принять его).

Я понял, что вы переходите с Ant на Maven, но вы IMO не на правильном пути, изгиб Maven, чтобы он соответствовал вашей существующей структуре / рабочему процессу проекта, это просто не рекомендуемый подход:

  1. Maven настоятельно рекомендует использовать его условные обозначения (сверхконфигурации) для упрощения работы. В противном случае все усложняется и приводит к ненужным накладным расходам на настройку.
  2. Отклоняясь от значений по умолчанию, вы как бы сами по себе.
  3. Если не использовать значения по умолчанию, это может привести к неприятным сюрпризам, некоторые (плохо) реализованные плагины могут использовать жестко заданные пути (например, src/main/java, target/classes и т. Д.) И не любят изменять значения по умолчанию.
  4. и т. Д. И т. П.

Рекомендованным способом было бы преобразовать существующую структуру в модульную структуру, совместимую с Maven, и принять стандартную схему Maven .

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

Я думаю, достаточно людей написали подобные советы, поэтому я не буду настаивать больше. Но вы должны прислушиваться к этим советам (и не настаивать на том, чтобы Maven вписывался в вашу существующую структуру), особенно если вы новичок в Maven. С моей точки зрения, вы не мигрируете из Ant в Maven, вы пытаетесь перенести Maven в сборку Ant.

Смотри также

1 голос
/ 28 июля 2010

Взгляните на Super POM .Это то место, откуда вы получаете «конвент».Возможно, вам придется изменить некоторые настройки в POM вашего проекта, если у вас есть разное расположение проекта, но это не хороший совет, как упоминалось здесь ранее.

0 голосов
/ 28 июля 2010

Если вы хотите использовать Maven, путь наименьшего сопротивления придерживается соглашений Maven. Конечно, у вас может быть другой исходный путь, но он определенно более сложен (кажется, что единственный способ - передать исходный каталог в качестве аргумента компилятора ), и что вы получите? Я считаю, что перемещение вашего исходного каталога гораздо проще.

0 голосов
/ 28 июля 2010

Безусловно, самое простое решение (если это возможно в ваших обстоятельствах) - переместить код в / src / main / java, поскольку именно там его ожидает maven.Если это невозможно, вам, по крайней мере, нужно сообщить maven, где найти источники.Из твоего ПОМа я нигде не вижу, где ты это сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...