JAVA支持平台“依赖”概念?

时间:2016-08-05 08:03:14

标签: java maven

我在我的项目中执行“MAVEN INSTALL”时,在我的控制台中发现了以下日志,

[INFO] Search took 70ms
[INFO] Theme "VAADIN\themes\mytheme" updated
[INFO] 
[INFO] --- vaadin-maven-plugin:7.5.10:compile-theme (default) @ MyUI ---
[INFO] Updating theme VAADIN\themes\mytheme
[INFO] Theme "VAADIN\themes\mytheme" compiled
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MyUI ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered
          resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO] 
[INFO] --- vaadin-maven-plugin:7.5.10:resources (default) @ MyUI ---
[INFO] auto discovered modules [com.ui.AppWidgetset]
[INFO] 3 source files from GWT module com.ui.AppWidgetset

他们在这里谈论的“平台依赖”概念是什么?由于JVM,JAVA支持平台独立的概念,因此JAVA的“功能”(我称之为功能)使它在控制台中打印这一行?

这意味着我的所有文件都经过加密(通过SEE),如果我将WAR放在非加密机器中(如果密钥不同),那么应用程序可能无法运行?

JAVA不应该允许这个“功能”。

请注意:我可能会以完全不正确的方式思考这个问题,或者我在眼前错过了一些东西。道歉,但仍想清除它。

3 个答案:

答案 0 :(得分:3)

在构建项目时,Maven插件可能会复制资源。这就是它显示此警告的原因。如果要使其独立,可以将以下内容添加到pom文件

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

This is actually a frequently asked question in maven.

这个或类似的警告是由处理纯文本文件但尚未配置为使用特定文件编码的插件发出的。因此,消除警告只是找出哪个插件发出它以及如何为其配置文件编码。这就像将以下属性添加到POM(或其父POM之一)一样简单:

答案 1 :(得分:2)

这是关于字符编码的。提到的Cp1252是Windows“特定”字符集。 (来源:https://en.wikipedia.org/wiki/Windows-1252)如果您想要删除对此特定字符集的依赖,请将所有资源保存为 UTF-8 编码文件。这将消除警告并引导您进入项目的更便携版本。有一种方法可以强制mvn转换这些文件(https://maven.apache.org/general.html#encoding-warning),但它可能会产生一些错误。 尝试将所有资源保存在UTF-8 中。

答案 2 :(得分:1)

您的问题更多地与 Maven作为构建系统(软件)相关,而不是Java本身。 Maven构建分几个步骤/阶段进行:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

在一步中,Maven资源插件复制资源,即html,XML,csv和其他文本文件:https://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered
          resources, i.e. build is platform dependent!

此处过滤意味着该插件可以将POM或预定义Maven属性中定义的Maven属性替换为$ {project.version}。因此,您可以在其中一个.html文件中显示自动版本。

可以将Maven Resources Plugin配置为使用特定字符编码/文件编码:https://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html

当你没有明确说明一个时,Maven采用平台的默认字符编码,在你的情况下是Windows系统 cp-1252 ,并且构建变得与平台有关。