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

问题描述:

我发现这下面的日志在我的控制台,而做“MAVEN安装”在我的项目,JAVA支持平台“依赖”概念?

[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 

什么是“依赖于平台”的概念,他们都在谈论这里? JAVA支持由JVM引起的Platform Independency的概念,所以JAVA的“特性”(我称之为特性)使它能够在控制台中打印这一行。

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

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

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

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

在构建项目时,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之一):

+0

我是新的maven概念。也许这就是为什么。非常感谢你,它非常完美。 – DeepN

您的问题更多地涉及到Maven作为构建系统(软件)比Java本身。 Maven构建发生在几个步骤/阶段:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

在一个步骤中的资源,即HTML,XML,CSV和其他文本文件被复制,通过Maven的资源插件: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的资源插件可以配置为使用特定的字符编码/文件编码工作:https://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html

当你没有明确声明一个,Maven的需要平台的默认字符编码,这是你的情况在Windows系统cp-1252,并且构建变成平台相关。