Есть ли способ добавить пользовательскую строку в .classpath, используя mvn eclipse: eclipse? - PullRequest
2 голосов
/ 10 февраля 2011

Я использую команду mvn eclipse:eclipse для генерации моих .project и .classpath.

Однако по некоторым причинам я хочу добавить одну строку в файл .classpath. Есть ли в моем pom.xml конфигурация, которую я могу использовать для достижения этого?

Обратите внимание, что <additionalConfig> нельзя использовать, поскольку это приведет к удалению содержимого .classpath.

Я использую maven 3.0.2 и maven-eclipse-plugin 2.8.

1 Ответ

4 голосов
/ 10 февраля 2011

Это зависит от того, что это за строка.

  1. Если это исходная папка, используйте buildhelper-maven-plugin to , добавьте исходную папку в фазе жизненного цикла до generate-sources это будет автоматически получено плагином eclipse.
  2. Если это контейнер classpath, вы можете использовать classpathContainers параметр
  3. Если вы хотите изменить выходные папки (с target/classes и target/test-classes на что-то другое), измените их в конфигурации сборки maven:

    <build>
        <!-- replace "target" -->
        <directory>somedir</directory>
        <!-- replace "target/classes" -->
        <outputDirectory>anotherdir</outputDirectory>
        <!-- replace "target/test-classes" -->
        <testOutputDirectory>yetanotherdir</testOutputDirectory>
    </build>
    

    Вы можете настроить каждую из этих трех независимои изменения будут приняты плагином eclipse, но рекомендуется помещать outputDirectory и testOutputDirectory внутри directory (обычно путем ссылки ${project.build.directory}), в противном случае вы нарушаете стандартную функциональность, например mvn clean (он очищает ${project.build.directory}):

    <build>
        <directory>bin</directory>
        <outputDirectory>${project.build.directory}/main-classes
        </outputDirectory>
        <!-- this config will replace "target" with "bin",
             compile src/main/java to "bin/main-classes"
             and compile src/test/java to "bin/test-classes"
             (because the default config for <testOutputDirectory> is
             ${project.build.directory}/test-classes )
        -->
    </build>
    

Ссылка:


Обновление: в вашем случае, я думаю, единственноеВозможное решение - программно редактировать файл .classpath.Вероятно, я бы сделал что-то вроде этого:

  1. Определить <profile> именованное затмение (или что-то еще)
  2. Определить выполнение плагина gmaven (используйте эту версию )
  3. Напишите короткий groovy-скрипт (встроенный в pom или внешний), который проверяет файл .classpath для вашего контейнера classpath и добавляет его в случае отсутствия (связывает выполнение с жизненным цикломфаза, например, generate-resources)
  4. установите активацию профиля на <file><exists>${project.basedir}/.classpath</exists></file> (поскольку вы хотите, чтобы он был активен только в проекте затмения)

Проблема с этим решением: eclipse:eclipse - это цель, а не фаза, поэтому выполнить ее автоматически невозможно, поэтому вам придется сделать что-то вроде этого:

mvn eclipse:eclipse    # two separate executions
mvn generate-resources # here, profile will be active

или, возможно, так и будеттакже работают:

mvn -Peclipse eclipse:eclipse generate-resources
...