簡體   English   中英

插件的Maven pom.xml設置編碼不起作用

[英]Maven pom.xml set encoding for plugin does not work

我有這樣的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>com.my</groupId>
    <artifactId>automation</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>

    <build>
        <directory>target</directory>
        <sourceDirectory>src/main/java</sourceDirectory>
        <outputDirectory>target/classes</outputDirectory>
        <finalName>AUTOMATION-01</finalName>
        <testSourceDirectory>src/test/java/com/my/tests</testSourceDirectory>
        <testOutputDirectory>target/test-classes</testOutputDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>

                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <updateReleaseInfo>true</updateReleaseInfo>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <parallel>methods</parallel>
                    <threadCount>10</threadCount>
                    <groups>com.my.testgroups.AutoTestsGroup</groups>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>

        </plugins>
    </build>


    <reporting>
        <outputDirectory>target/site</outputDirectory>
    </reporting>

    <profiles>

        <profile>
            <id>release-profile</id>
            <activation>
                <property>
                    <name>performRelease</name>
                </property>
            </activation>
        </profile>
    </profiles>


    <dependencies>
        <dependency>
            <groupId>javax.xml.ws</groupId>
            <artifactId>jaxws-api</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.12</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

</project>

我使用maven-surefire-plugin生成報告,例如

 Получаем имя файла с тесткейсом и имя самого тесткейса
2015-10-12 11:30:57 INFO  - Выполняется файл тесткейс : case1_125_multidrive, с именем кейса: Собственник_равно_Страхователь_Москва-возраст_больше_18-125лс_мультидрайв
2015-10-12 11:30:57 INFO  - ########## Создаем владельца ТС #########
2015-10-12 11:30:57 INFO  - Фамилия Витряк
2015-10-12 11:30:57 INFO  - �мя Агап
2015-10-12 11:30:57 INFO  - Отчество Алексеевич
2015-10-12 11:30:57 INFO  - Генерируем дату рождения в соответствии с условием: возраст_больше_18
2015-10-12 11:30:57 INFO  - Дата рождения: 1967-01-16
2015-10-12 11:30:57 INFO  - Водительский стаж не будет сгенерирован, мультидрайв
2015-10-12 11:30:57 INFO  - ######### Starting create user request on UAT env. ########
2015-10-12 11:30:57 INFO  - Создан владелец ТС с publicID: su:2086
2015-10-12 11:30:59 INFO  - Каско квота стоимость null
2015-10-12 11:30:59 INFO  - Осаго квота стоимость null

我確實為此插件設置了編碼,但它根本不起作用。 我嘗試在Jenkins上運行maven並使用JUnit Jenkins插件進行報告,請幫助了解問題所在

使用Jenkins Maven Build輸入作為目標: mvn clean package

使用Jenkins M2 Release Plugin創建您庫的新版本。 這會將創建jar部署到您的中央Maven存儲庫,例如NexusArtifactory

對於通過surefire編碼使用的報告編碼,請設置屬性project.reporting.outputEncoding

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

pom.xml中有幾件事可以刪除,因為它們是pom.xml默認設置。 喜歡:

  • 刪除帶有value jar的條目packaging ,因為這是默認設置。
  • 使用默認值src/main/java刪除sourceDirectory
  • 刪除outputDirectory機智值target/classes因為它是默認值
  • 刪除具有target/test-classes值的testOutputDirectory ,因為它是默認值
  • 刪除默認值為src/main/resources resources/resource/directory

  • 問題: testSourceDirectory值真的是src/test/java/com/my/tests嗎? 看起來它包含了軟件包名稱的一部分。 它應該只包含指向pacakge名稱的目錄的路徑。 sourceDirectory完全相同,值src/main/java 更具邏輯性的值將是src/test/java ,這是默認值,因此無需進行設置。

  • 刪除reporting條目,所有均為默認設置。 如果您想更改輸出位置,請設置屬性project.reporting.outputDirectory (請參閱站點輸出目錄

  • 刪除finalName ,因為它變得更不清楚然后更清晰。 默認值為工件ID,因此此處為automation

<reporting> <outputDirectory>target/site</outputDirectory> </reporting>

pom.xml可能看起來像這樣:

<?xml version="1.0" encoding="UTF-8"?>
<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>com.my</groupId>
    <artifactId>automation</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <testSourceDirectory>src/test/java/com/my/tests</testSourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>

                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <updateReleaseInfo>true</updateReleaseInfo>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <parallel>methods</parallel>
                    <threadCount>10</threadCount>
                    <groups>com.my.testgroups.AutoTestsGroup</groups>
                </configuration>
            </plugin>

        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release-profile</id>
            <activation>
                <property>
                    <name>performRelease</name>
                </property>
            </activation>
        </profile>
    </profiles>

    <dependencies>
        <dependency>
            <groupId>javax.xml.ws</groupId>
            <artifactId>jaxws-api</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.12</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>

嘗試:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>3.2</version>
    <configuration>
      <outputEncoding>UTF-8</outputEncoding>
    </configuration>
  </plugin>

和:

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM