当前位置: 首页 > 知识库问答 >
问题:

为什么Maven要警告我编码?

蔡鸿骞
2023-03-14

我的目标是从一个项目中创建一个原型。

当我运行一个不涉及maven原型插件的目标时,我看不到任何警告:

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-archetype-base ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-archetype-base ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]

另一方面,当我运行archetype:createfromproject时,我得到了几个:

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-archetype-base-archetype ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 10 resources
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-archetype-base-archetype ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources

我知道标准的maven方法是使用project.build.sourceEncode属性。为了解决这个问题,我试图向pom添加更多的属性,但没有一个有效。

有什么想法吗?谢谢

我有下面的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>my.group.id</groupId>
<artifactId>my-artifact</artifactId>
<version>0.0.1</version>
<packaging>maven-archetype</packaging>

<properties>

    <!-- Compiler properties -->
    <maven.compiler.target>1.7</maven.compiler.target>
    <maven.compiler.source>1.7</maven.compiler.source>
    <encoding>UTF-8</encoding>
    <project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
    <project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
    <project.resources.sourceEncoding>${encoding}</project.resources.sourceEncoding>
    <archetype.encoding>${encoding}</archetype.encoding>

    <!-- Maven plugins version -->
    <maven-archetype-plugin-version>2.2</maven-archetype-plugin-version>
    <maven-resources-plugin-version>2.6</maven-resources-plugin-version>

    <!-- Maven extentions version -->
    <maven-archetype-packaging-extension-version>2.2</maven-archetype-packaging-extension-version>
</properties>
<dependencies>
[...]
</dependencies>

<build>
    <extensions>
        <extension>
            <groupId>org.apache.maven.archetype</groupId>
            <artifactId>archetype-packaging</artifactId>
            <version>${maven-archetype-packaging-extension-version}</version>
        </extension>
    </extensions>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin-version}</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-archetype-plugin</artifactId>
            <version>${maven-archetype-plugin-version}</version>
            <extensions>true</extensions>
        </plugin>

    </plugins>

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

共有3个答案

酆英达
2023-03-14

当您运行目标原型:create-from-project时,Maven生成一个POM文件,用于在Target/生成源/原型/pom.xml构建原型,然后在这个POM上运行目标(默认情况下)。

生成的POM文件不具有project.build.sourceEncode或任何其他定义编码的属性,这就是为什么您会收到警告。

POM由org根据该原型生成。阿帕奇。专家原型造物主。fileSetacheTypeCreator#createArchetypeProjectPom,从该代码中似乎没有向生成的POM文件添加属性的方法。

邹禄
2023-03-14

我很恼火地看到maven在上面的条目之后继续抱怨

然后我意识到这是一个故障保护插件,它需要自己的属性

就这样了

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
太叔逸春
2023-03-14

您还没有像这样设置编码默认属性:

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

这种方法比为每个插件手动定义编码要好,因为所有插件都有编码的默认值,例如maven resources插件:

encoding:

The character encoding scheme to be applied when filtering resources.
Type: java.lang.String
Required: No
User Property: encoding
Default: ${project.build.sourceEncoding}

这意味着你只需要定义这个属性,插件就会自动使用这个编码。

 类似资料:
  • 我正在使用Eclipse和Java。我已经设置了jena库并使用这个库完成了我的第一个RDF语句,但是我得到了一个警告,我不知道它到底意味着什么。代码如下: 这是输出: 所以代码确实可以编译和工作,但我不知道如何处理这个警告。我怎样才能摆脱它?

  • 我对字符编码的概念很困惑。 什么是Unicode、GBK等?编程语言如何使用它们? 我需要费心去了解他们吗?有没有一种更简单或更快的编程方法,而不必麻烦自己?

  • 我有这个组件。我想将调用处理程序传递给我创建的每个listElement。如果我像下面这样做,使用,它可以正常工作。问题是,我从控制台中的React中得到此警告:

  • 我不明白为什么我收到以下代码的警告: 未选中对<code>isAssignableFrom(类)的调用 当我使用< code>isInstance方法时(根据我的理解,它提供相同的结果),我没有得到警告:

  • 问题内容: 我对Maven快照的含义以及为什么要构建一个快照感到困惑。 问题答案: Maven中的快照版本尚未发布。 这个想法是,前一个版本(或任何其他版本)完成后,存在一个。那个版本可能会变成 。它基本上是“ 开发中”。这可能接近实际发行版,或相当遥远(0.9例如,发行后立即发行)。 “真实”版本和快照版本之间的区别在于快照可能会得到更新。这意味着今天下载的文件可能不同于昨天或明天下载的文件。

  • 问题内容: 我这里有这个组件。我想将调用处理程序传递给我创建的每个listElement。如果我像下面那样使用,则可以正常运行。问题是我从控制台的React收到此警告: 如果我不绑定它,我的孩子们将不了解呼叫处理程序。我可以做些什么? PS: 我知道解构作业,如http://facebook.github.io/react/docs/transferring- props.html#transfe