কেন মাভেন আমাকে এনকোডিং সম্পর্কে সতর্ক করে?


98

আমার লক্ষ্য হচ্ছে একটি প্রকল্প থেকে একটি প্রত্নতাত্ত্বিক তৈরি করা।

আমি যখন এমন কোনও লক্ষ্য চালিত করি যা মেন-আরকিটাইপ-প্লাগইনকে অন্তর্ভুক্ত না করে, আমি কোনও সতর্কতা দেখতে পাচ্ছি না:

[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]

অন্য প্রান্তে, যখন আমি আরকিটাইপটি চালাব: তৈরি করুন-প্রকল্প থেকে, আমি একটি দম্পতি পেয়েছি:

[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

আমি জানি যে "মানক" খাঁটি উপায় হল project.build.sourceEncodingসম্পত্তিটি ব্যবহার করা । এই সমস্যাটির সমাধান করার জন্য আমি পমটিতে আরও কয়েকটি সম্পত্তি যুক্ত করার চেষ্টা করেছি কিন্তু তাদের কোনওটিই কাজ করে না।

কোন ধারনা? ধন্যবাদ

আমার কাছে নিম্নলিখিত 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>

উত্তর:


18

আপনি যখন লক্ষ্যটি চালান archetype:create-from-project, মাভেন একটি ধনু ধরণ তৈরির জন্য একটি পিওএম ফাইল তৈরি করে target/generated-sources/archetype/pom.xmlএবং তারপরে packageএই পিওমে লক্ষ্য (ডিফল্টরূপে) চালায়।

উত্পন্ন POM ফাইলের project.build.sourceEncodingবা এনকোডিং সংজ্ঞায়িত অন্য কোনও সম্পত্তি নেই এবং এ কারণেই আপনি সতর্কতাটি পেয়েছেন।

খুলুন POM থেকে জেনারেট হওয়া এই প্রোটোটাইপ দ্বারা org.apache.maven.archetype.creator.FilesetArchetypeCreator#createArchetypeProjectPom, এবং যে কোড থেকে সেখানে ফলে খুলুন POM ফাইলে বৈশিষ্ট্য যোগ করার জন্য একটি উপায় হতে মনে হচ্ছে না।


147

আপনি এর মতো এনকোডিং ডিফল্ট সম্পত্তি সেট করেন নি :

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

প্রতিটি অ্যাডমিনটি প্রতিটি প্লাগইনের জন্য ম্যানুয়ালি এনকোডিং সংজ্ঞায়িত করার চেয়ে এই পদ্ধতির চেয়ে ভাল, এনকোডিংয়ের জন্য ডিফল্ট মানযুক্ত সমস্ত প্লাগইনকে উদাহরণস্বরূপ মাভেন-রিসোর্সেস-প্লাগইন তৈরি করুন :

encoding:

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

সুতরাং এর অর্থ আপনার কেবল এই সম্পত্তিটি নির্ধারণ করতে হবে এবং প্লাগইনটি স্বয়ংক্রিয়ভাবে এই এনকোডিংটি ব্যবহার করবে।


4
সেট করে দিলাম। আমার পোম দেখুন। ধন্যবাদ
মার্কো ফেরারি

4
আপনি প্লাগইন কনফিগারেশনের এন্ট্রিগুলি সরাতে পারেন <encoding>${encoding}</encoding>
খামারবায়েস

4
ঠিক আছে. সমস্যার সমাধান হয়েছে কিনা তা দেখার জন্য আমি সেইসব এন্ট্রি যুক্ত করেছি, তবে ভাগ্য নেই
মার্কো ফেরারি

ফ্যালব্যাক কেন ইউটিএফ -8 এর পরিবর্তে প্ল্যাটফর্ম এনকোডিং ব্যবহার করছে তা পাই না। উত্তরাধিকার সমর্থন?
মিশা

@ এমএসএ কারণ সকল প্ল্যাটফর্মের ডিফল্ট হিসাবে ইউটিএফ -8 নেই। সবচেয়ে সহজ উদাহরণ উইন্ডোজ।
খামারবায়েস

35

উপরের প্রবেশের পরে মাভেন অভিযোগ করতে থাকে দেখে আমি বিরক্ত হয়ে পড়েছিলাম

তখন আমি বুঝতে পারি যে এটির ব্যর্থতা সেফ প্লাগইন এবং এটির নিজস্ব সম্পত্তি দরকার

সুতরাং এখানে এটি যায়

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.