মাভেন ব্যবহার করার সময় কীভাবে কঠোর জাভা 8 জাভাদোকের চারপাশে কাজ করবেন


133

আপনি খুব শীঘ্রই বুঝতে পারবেন যে জাভাদোকের কথা বলতে গেলে জেডিকে 8 আরও অনেক কড়া (ডিফল্টরূপে)। ( লিঙ্ক - শেষ বুলেট পয়েন্ট দেখুন)

যদি আপনি কখনই কোনও জাভাদোক তৈরি করেন না তবে অবশ্যই আপনি কোনও সমস্যা অনুভব করবেন না তবে ম্যাভেন রিলিজ প্রক্রিয়া এবং সম্ভবত আপনার সিআই বিল্ডসের মতো জিনিসগুলি হঠাৎ ব্যর্থ হয়ে যাবে যেখানে তারা জেডিকে 7 এর সাথে ঠিক কাজ করেছিল। জাভাডোক সরঞ্জামটির প্রস্থান মূল্য যাচাই করে এমন কিছু এখন ব্যর্থ হবে। জেডি কে 8 জাভাদোক জেডিকে warningsto এর তুলনায় সম্ভবত আরও ভার্জোজ তবে এটি এখানে সুযোগ নয়। আমরা কথা বলছি errors!

এটি সম্পর্কে কী করা উচিত তা প্রস্তাব সংগ্রহ করার জন্য এই প্রশ্নটি বিদ্যমান। সেরা পন্থা কি? উত্স কোড ফাইলগুলিতে এই ত্রুটিগুলি একবারে এবং সকলের জন্য সমাধান করা উচিত? আপনার যদি একটি বিশাল কোড বেস থাকে তবে এটি অনেক কাজ হতে পারে। অন্য কোন বিকল্প বিদ্যমান?

পূর্বে যেটি ব্যর্থ হবে তার গল্পগুলির সাথে মন্তব্য করতেও স্বাগত।

এখন যা ব্যর্থ হয় তার ভৌতিক গল্প

wsimport সরঞ্জাম

wsimportসরঞ্জাম ওয়েব পরিষেবা ভোক্তা তৈরির জন্য একটি কোড জেনারেটর। এটি জেডিকে অন্তর্ভুক্ত রয়েছে। এমনকি আপনি wsimportজেডিকে 8 থেকে সরঞ্জামটি ব্যবহার করলেও এটি এমন উত্স কোড তৈরি করবে যা জেডিকে 8 থেকে জাভাদোক সংকলক দিয়ে সংকলন করা যায় না

@ অনুমোদন ট্যাগ

আমি ৩-৪ বছর বয়সী সোর্স কোড ফাইলগুলি খুলছি এবং এটি দেখুন:

/**
 * My very best class
 * @author John <john.doe@mine.com> 
 */

<চরিত্রের কারণে এটি এখন ব্যর্থ। কড়া কথা বলতে এটি ন্যায়সঙ্গত, তবে খুব ক্ষমাকারী নয়।

এইচটিএমএল টেবিল

আপনার জাভাদোকের এইচটিএমএল টেবিলগুলি? এই বৈধ এইচটিএমএল বিবেচনা করুন:

/**
 *
 * <table>
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */

এটি এখন ত্রুটি বার্তায় ব্যর্থ no summary or caption for table। একটি দ্রুত সমাধান হ'ল এটি করা:

/**
 *
 * <table summary="">
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */

তবে কেন জাভাদোক সরঞ্জাম থেকে এই মারাত্মক ত্রুটি আমাকে মারবে ??

যে বিষয়গুলি এখন আরও সুস্পষ্ট কারণে ব্যর্থ

  1. অবৈধ লিঙ্কগুলি, যেমন {@link notexist}
  2. বিকৃত এইচটিএমএল, উদাঃ always returns <code>true<code> if ...

হালনাগাদ

লিঙ্ক:

চমৎকার বিষয় উপর ব্লগ দ্বারা স্টিফেন Colebourne


13
এটি কীভাবে বন্ধ করা যেতে পারে এই ব্লগটি দেখায়: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
হিমাংশু ভরদ্বাজ

1
আপনি ব্যবহার করতে পারেন -Xdoclintএমনকি javacএটা বলতে ... ডক্স যখন সংকলন চেক করতে
হোলগার

1
@HimanshuBhardwaj। স্টিফেন কুলবার্নের ব্লগে লিঙ্ক করার জন্য ধন্যবাদ। আমি এখন পর্যন্ত এই বিষয়টিতে পড়েছি সেরা টুকরা!
পিটারহ

অতিরিক্ত হিসাবে একটি "ত্রুটি" ত্রুটিযুক্ত: ''> 'এর খারাপ ব্যবহার - এটি ভুল,'> '> এর নির্দিষ্ট ক্রম বাদে এক্সএমএলে'> 'পুরোপুরি গ্রহণযোগ্য which চরগুলি অবশ্যই পালাতে হবে)। কেবল '<' এড়াতে হবে, '>' সুবিধার্থে স্মৃতিযুক্ত (জিটি) আছে তবে এর ব্যবহার সম্পূর্ণ alচ্ছিক।
স্ট্যাক্সমান

আমি ভাবছি যে এইচটিএমএল 5 এর পরিবর্তে এইচটিএমএল 4 কমপ্লায়েন্সের সাথে কী আছে ব্যক্তিগতভাবে, আমি সোর্স কোডটি পড়তে হবে এবং কেবল সুন্দর আউটপুটটিই নয়, আমি একটি সাধারণ মার্কআপ ভাষা পছন্দ করব; এবং কমপক্ষে আমার জন্য এইচটিএমএলের মানব-পঠনযোগ্যতা বিতর্কযোগ্য।
ড্যানিয়েল

উত্তর:


56

আপাতত, মাভেন ব্যবহার করার সময় কঠোর জাভা 8 জাভাদোকের চারপাশে কাজ করার সবচেয়ে সহজ উপায়টি এটি নিষ্ক্রিয় করছে।

যেহেতু প্যারামিটারটি -Xdoclint:noneকেবল জাভা 8-তে বিদ্যমান রয়েছে তাই এই প্যারামিটারটি সংজ্ঞায়িত করা অন্য যে কোনও জাভার জন্য বিল্ডটি ভেঙে দেয়। এটি প্রতিরোধ করতে, আমরা এমন একটি প্রোফাইল তৈরি করতে পারি যা জাভা সংস্করণ নির্বিশেষে আমাদের সমাধান কাজ করে তা নিশ্চিত করে কেবল জাভা 8 এর জন্য সক্রিয় থাকবে be

<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <additionalparam>-Xdoclint:none</additionalparam>
        </properties>
    </profile>
</profiles>

এটি কেবল আপনার পোমে যোগ করুন এবং আপনি যেতে ভাল।


মেভেন-জাভাদোক-প্লাগইন 3.0.0 ব্যবহারকারীদের জন্য:

প্রতিস্থাপন করা

<additionalparam>-Xdoclint:none</additionalparam>

দ্বারা

<doclint>none</doclint>

ধন্যবাদ @banterCZ!


3
আমরা সম্ভবত এটি সমাধান করব যা আমাদের বেশিরভাগ বাস্তবায়ন করবে। আমি <activation>অংশটি পছন্দ করি তবে আমি আশা করি যে কেউ এমন একটি সরঞ্জাম নিয়ে আসেন যা সেই সমস্ত উত্স ফাইলগুলির মধ্য দিয়ে যায় এবং বিকাশকারীকে ত্রুটিগুলি ঠিক করতে ... কেবলমাত্র ডকলিন্ট বন্ধ না করে সহায়তা করতে পারে।
পিটার

আপনি একই সময়ে ডিফল্টরূপে অন্য কোনও প্রোফাইল সক্রিয় থাকার উপর নির্ভর করে তবে এই সমাধানটি ব্যবহার করে সাবধান থাকুন (অ্যাক্টিভবিডিফল্ট = সত্য ব্যবহার করে)।
mWs

1
@ পেটার: সম্পূর্ণরূপে সমস্ত কিছু নথিভুক্ত করার কোনও অর্থ নেই, এটি একটি অকেজো ডুপ্লিকেট কাজ, ক্লিন কোড নীতি দ্বারা এটি কেবল যা স্পষ্ট নয়, এবং পাবলিক এপিআই ডকুমেন্ট করার জন্য সুপারিশ করা হয়।
ড্যানিয়েল হুরি

1
এটি ম্যাভেন-জাভাদোক-প্লাগইন সংস্করণ 3.0.0 এর সাথে কাজ করে না। এক্সডোক্লিন্ট তৈরির জন্য আমাকে 3.0.0-M1 সংস্করণে ফিরে যেতে হয়েছিল: কোনও কাজ নেই।
মেহরাদ সাদেঘ

4
@MehradSadegh জন্য ম্যাভেন-javadoc-প্লাগইন সংস্করণ 3.0.0 মাত্র প্রতিস্থাপন <additionalparam>-Xdoclint:none</additionalparam>দ্বারা<doclint>none</doclint>
banterCZ

53

আপনি যদি ম্যাভেন জাভাদোক প্লাগইন ব্যবহার করছেন failOnErrorতবে কোনও HTML টির ত্রুটি পাওয়া গেলে এটি থামানো থেকে বিরত রাখতে আপনি বিকল্পটি ব্যবহার করতে পারেন :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <configuration>
    <failOnError>false</failOnError>
  </configuration>
</plugin>

অথবা আপনি কঠোর এইচটিএমএল বিকল্পগুলি সম্পূর্ণরূপে এটি নিষ্ক্রিয় করতে পারেন:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <additionalparam>-Xdoclint:none</additionalparam>
    </configuration>
  </plugin>
</plugins>

আরও তথ্যের জন্য


2
হুম। এই সমাধানগুলির সাথে সমস্যাটি হ'ল আপনি যদি জেডিকে 8 জাভাদোকের সাথে এটির কথা ভাবেন তবে আপনি ত্রুটিগুলিতে ব্যর্থ হতে চাইবেন না, তবে জেডিকে J জাভাদোকের সাথেই করুন। সুতরাং এই কারণে আমি -Xdoclintবিকল্পটি পছন্দ করি। আশা করি কোনও জেডিকে J জাভাদোকের সাথে মৃত্যুদণ্ড কার্যকর হলে চুপচাপ উপেক্ষা করা হবে?
পিটারহ

2
আপনি জাভা সংস্করণে কীড করা কোনও মভেন প্রোফাইলের মাধ্যমে শর্তসাপেক্ষে বিকল্পটি প্রয়োগ করতে পারেন…?
ডোনাল ফেলো

14
না, জেডিকে 7 সহ এটি জাভাডোকের সাথে ব্যর্থ: ত্রুটি - অবৈধ পতাকা: -ডডোক্লিন্ট: কিছুই নেই (দুর্দান্ত কাজ ওরাকল)।
জিওভানি টরালদো

4

ম্যাভেন-জাভাদোক-প্লাগইন-এর 3.0.0 সংস্করণ থেকে ডকলিন্টটি ডেডিকেটেড এক্সএমএল ট্যাগের মাধ্যমে কনফিগার করা হয়েছে

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
       <doclint>none</doclint>
    </configuration>
</plugin>

3

আমি @ থিয়াগোপোরসিঙ্কুলার সমাধানটি পছন্দ করি তবে এটি আমার পক্ষে যথেষ্ট যায়নি।

আমার কাছে ইতিমধ্যে জাভাডক প্লাগইন additionalparamসেট রয়েছে যা প্রোফাইল দ্বারা ওভাররাইড করা হয়নি। এই কারণে আমাকে করতে হয়েছিল:

  • কোনও disableDoclintসম্পত্তি ডিফল্টরূপে খালি রাখতে সেট করুন ।
  • জাভা> = 8 এ থাকলে disableDoclintসম্পত্তিটি সেট করুন-Xdoclint:none
  • মেশিন-জাভাদোক-প্লাগইন ${disableDoclint} in theঅতিরিক্তের ব্যবহার করুন section of the`

এটি ভার্বোস সত্ত্বেও ভাল কাজ করে বলে মনে হচ্ছে।

<properties>
    <!-- set empty property -->
    <disableDoclint></disableDoclint>
</properties>
<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <!-- set property if >= java 8 -->
            <disableDoclint>-Xdoclint:none</disableDoclint>
        </properties>
    </profile>
    ...
</profiles>

তারপরে নীচে নীচে আমি যে বিভাগটি ইতিমধ্যে সংজ্ঞায়িত করেছি সেটিতে ${disableDoclint}al চ্ছিক পরিবর্তনশীল ব্যবহার additionalparamকরতে পারি।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <showPackage>false</showPackage>
                <additionalparam>-tag inheritDoc:X ${disableDoclint}</additionalparam>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <showPackage>false</showPackage>
        <bottom>This documentation content is licensed...</bottom>
        <additionalparam>-tag inheritDoc:X ${disableDoclint}</additionalparam>
    </configuration>
</plugin>

এটি জাভা 8 এর অধীনে কাজ করে তবে জাভা 7 এর অধীনে সিনট্যাক্স ত্রুটি সৃষ্টি করে না W


2

নোট করুন যে ত্রুটির জন্য no summary or caption for table, ব্যবহার করা <table summary="">আর কাজ করবে না। যদি এটি আপনার পরিস্থিতি হয় তবে <caption>আপনার টেবিলটিতে এই জাতীয় উপাদান যুক্ত করুন :

<table>
    <caption>Examples</caption>
    ...
</table>

আশা করছি এটা ওখানে কাওকে সাহায্য করবে. আমি এটি খুঁজে না পাওয়া পর্যন্ত আমাকে কিছুটা সময় নিয়েছে।


1
জেডিকে কী সংস্করণ? নিশ্চিতভাবে <table summary="">কৌশলটি এখনও জেডিকে 8 এ কাজ করে। (সবেমাত্র jdk1.8.0_201 এ পরীক্ষা করা হয়েছে)
পেরেটার

@ পেটার আমি jdk ১১ ব্যবহার করেছি
জেরোনিমো ব্যাকস

1
এটি আপ-টু-ডেট উত্তর। summary="..."এইচটিএমএল 5 (জেডিকে 11 জাভাদোকের জন্য ডিফল্ট আউটপুট) এর সাথে আর কোনও বৈশিষ্ট্য সমর্থিত নয়। এছাড়া JDK 8. সমর্থিত
Kap
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.