Eclipse в цикле автоматической сборки с использованием m2e с git-commit-id-плагином для генерации ресурса

#eclipse #m2e

#eclipse #m2e

Вопрос:

Я использую Eclipse (пробовал как Juno, так и Kepler) m2e . Все работает нормально, пока я не попытался использовать git-commit-id-plugin для генерации файла property ( git.properties ) моей сборки git (название ветки, имя тега, время сборки и т. Д.). Вот иерархия каталогов.

 .classpath
.project
.settings/org.eclipse.jdt.core.prefs
.settings/org.eclipse.m2e.core.prefs
pom.xml
src/git.properties (Generated file)
  

Я думаю, что проблема здесь в том, что автоматическая сборка eclipse/m2e будет генерироваться git.properties . После этого, поскольку git.properties он обновляется, он запускает другую автоматическую сборку.

Есть ли способ сказать eclipse не «смотреть» src/git.properties ?

Весь файл, упомянутый выше, прикреплен ниже:

.classpath

 <?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="src" output="target/classes" path="src">
                <attributes>
                        <attribute name="optional" value="true"/>
                        <attribute name="maven.pomderived" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
                <attributes>
                        <attribute name="maven.pomderived" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
                <attributes>
                        <attribute name="maven.pomderived" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="output" path="target/classes"/>
</classpath>
  

.проект

 <?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>testMavenEclipseAutoBuild</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.m2e.core.maven2Builder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.m2e.core.maven2Nature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>
</projectDescription>
  

.settings/org.eclipse.jdt.core.prefs

 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.6
  

.settings/org.eclipse.m2e.core.prefs

 activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
  

pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>testMavenEclipseAutoBuild</groupId>
        <artifactId>testMavenEclipseAutoBuild</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>test</name>
        <build>
                <sourceDirectory>src</sourceDirectory>
                <plugins>
                        <plugin>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <version>3.1</version>
                                <configuration>
                                        <source>1.6</source>
                                        <target>1.6</target>
                                </configuration>
                        </plugin>
                        <plugin>
                                <!-- Ref: https://github.com/ktoso/maven-git-commit-id-plugin#using-the-plugin -->
                                <groupId>pl.project13.maven</groupId>
                                <artifactId>git-commit-id-plugin</artifactId>
                                <version>2.1.10</version>
                                <executions>
                                        <execution>
                                                <goals>
                                                        <goal>revision</goal>
                                                </goals>
                                        </execution>
                                </executions>

                                <configuration>
                                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                                        <generateGitPropertiesFilename>src/git.properties</generateGitPropertiesFilename>
                                </configuration>

                        </plugin>
                </plugins>
        </build>
</project>
  

Ответ №1:

Щелкните правой кнопкой мыши по проекту, выберите Properties/Resource/Resource Filter и добавьте правило исключения всех, чтобы исключить файл git.properties из ресурсов.

Это помогло мне.

Ответ №2:

Возможно, вы захотите изменить generateGitPropertiesFilename, чтобы git.properties был сгенерирован в каталоге target / classes .

 <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
  

Ответ №3:

Вы можете изменить метаданные eclipse lifecycle-mapping-metadata.

Смотрите Раздел 4.2 на этом сайте.

Добавьте следующий код:

 <?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <versionRange>[2.1,)</versionRange>
                <goals>
                    <goal>revision</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>