Maven:如何配置native2ascii-maven-plugin

时间:2011-08-18 09:15:58

标签: java maven

我向你们提出这个问题,因为项目页面本身并没有太多的信息。 基本上我设置native2ascii-maven-plugin来处理我的一些资源。它适用于处理根目录中的文件。但现在我在子目录下有文件:/template/email/并希望它们包含在处理中。你能帮帮我吗?

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>native2ascii-maven-plugin</artifactId>
        <version>1.0-alpha-1</version>
        <configuration>
            <dest>target/resources</dest>
            <src>src/main/resources</src>
        </configuration>
        <executions>
            <execution>
                <id>native2ascii-utf8</id>
                <goals>
                    <goal>native2ascii</goal>
                </goals>
                <configuration>
                    <encoding>UTF8</encoding>
                    <includes>ApplicationResources*.properties, errors.properties, /template/email/newBooking*.ftl</includes>
                </configuration>
            </execution>
        </executions>
    </plugin>

非常感谢!

6 个答案:

答案 0 :(得分:6)

您需要为要处理的每个文件夹定义一个执行部分,并将src和dest移动到执行部分:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>native2ascii-maven-plugin</artifactId>
    <version>1.0-alpha-1</version>
    <executions>
        <execution>
            <id>native2ascii-utf8-resources</id>
            <goals>
                <goal>native2ascii</goal>
            </goals>
            <configuration>
                <dest>target/resources</dest>
                <src>src/main/resources</src>
                <encoding>UTF8</encoding>
                <includes>ApplicationResources*.properties, errors.properties, /template/email/newBooking*.ftl</includes>
            </configuration>
        </execution>
        <execution>
            <id>native2ascii-utf8-email</id>
            <goals>
                <goal>native2ascii</goal>
            </goals>
            <configuration>
                <dest>target/resources/email</dest>
                <src>src/main/templates/email</src>
                <encoding>UTF8</encoding>
            </configuration>
        </execution>
    </executions>
</plugin>

答案 1 :(得分:4)

这是“native2ascii”的解决方案。 src/main/locale中找到的所有文件(递归)都指定为target/classes

<project>
    [...]
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>native2ascii-maven-plugin</artifactId>
                <version>1.0-alpha-1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>native2ascii</goal>
                        </goals>
                        <configuration>
                            <encoding>UTF8</encoding>
                            <src>src/main/locale</src>
                            <dest>target/classes</dest>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            [...]

答案 2 :(得分:2)

以下是版本1.0-beta-1的示例配置:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>native2ascii-maven-plugin</artifactId>
            <version>1.0-beta-1</version>
            <executions>
                <execution>
                    <id>native2ascii-utf8-resources</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>native2ascii</goal>
                    </goals>
                    <configuration>
                        <workDir>src/main/resources</workDir>
                        <encoding>UTF8</encoding>
                        <tempDir>${basedir}/temp</tempDir>
                        <includes>
                            <include>**/*_fa.properties</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

如果出现错误,您可以查看插件源代码here

答案 3 :(得分:0)

我最近创建了另一个版本的native2ascii maven插件,它涵盖旧版本的使用,还包含m2e Eclipse插件使用的XML文件:https://github.com/dmatej/native2ascii/releases

我必须强迫某人把它放到官方maven存储库中......但你仍然可以在自己的库中使用它。

答案 4 :(得分:0)

1.0-beta-1的缺点是使用 workDir 的方法。 我不想在每个版本中更改我的源代码,但我仍然需要一些工具来为我的属性文件提供unicode anotation。

所以我用两种配置解决了这个问题:

  1. 将workDir设置为项目的目标;
  2. 在process-resources之后将阶段更改为某些内容;

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>native2ascii-maven-plugin</artifactId>
      <version>1.0-beta-1</version>
      <executions>
        <execution>
          <id>native2ascii-utf8-i18n</id>
          <phase>compile</phase>
          <goals>
            <goal>native2ascii</goal>
          </goals>
          <configuration>
            <workDir>target/classes/i18n</workDir>
            <encoding>${project.build.sourceEncoding}</encoding>
            <includes>
              <include>**/*.properties</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>
    
  3. 我已经使用了阶段&#39;编译&#39;因为IDE内部是我最常用的。

答案 5 :(得分:0)

这是2.0+版的示例配置

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>native2ascii-maven-plugin</artifactId>
    <version>2.0.1</version>
    <executions>
        <execution>
            <id>native2ascii-utf8-properties</id>
            <phase>process-resources</phase> 
            <goals>
                <goal>inplace</goal>
            </goals>
            <configuration>
                <dir>${project.build.directory}/classes</dir>
                <includes>**/*.properties</includes>
                <encoding>UTF-8</encoding>
            </configuration>
        </execution>
    </executions>
</plugin>