মাভেনে "ওয়েবএক্সএমএল বৈশিষ্ট্য প্রয়োজন" ত্রুটি


318

আমি নিম্নলিখিত ত্রুটি পাচ্ছি:

ওয়ার একত্রিত করার সময় ত্রুটি: ওয়েবএক্সএমএল বৈশিষ্ট্য প্রয়োজন (বা আপডেট মোডে এক্সিকিউট করা থাকলে প্রাক-বিদ্যমান ওয়েবে-আইএনএফ / ওয়েব.এক্সএমএল)

আমি web.xmlঠিক জায়গায় পেয়েছি যাprojectname\src\main\webapp\WEB-INF\web.xml

কি এই সৃষ্টি হতে পারে?


1
আপনার প্যাকেজিং পোমে যুদ্ধের জন্য প্রস্তুত?
মুকুট

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

উত্তর:


359

আপনি যদি আপনার ম্যাভেন-ওয়ার-প্লাগইনের একটি কোড স্নিপেট সরবরাহ করতে পারেন তবে এটি সহায়ক হবে। দেখে মনে হচ্ছে এটি web.xmlঠিক জায়গায় আছে, তবুও আপনি চেষ্টা করে দেখতে পারেন এবং স্পষ্টভাবে লোকেশন দিতে পারেন

<plugin>            
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>        
  </configuration>
</plugin>

36
ধন্যবাদ আমার জন্যও কাজ করেছেন। তবে ডিফল্ট অবস্থানটি কী যেখানে মাভেন অনুসন্ধান করে?
মহিষ 8

5
আমি সবেমাত্র যুদ্ধের প্লাগইনটি ২.১.১ থেকে ২.৪ এ আপডেট করেছি এবং পূর্বনির্ধারিত অবস্থানটি পরিষ্কার করে দেওয়া দরকার।
xverges

2
আপনি ইত্তেলিজ আইডিইএ ব্যবহারকারীদের জন্য আপনার উত্তরটি আপডেট করতে চাইতে পারেন - ইন্টেলিজি অন্য একটি প্রকল্প কাঠামো তৈরি করেছে যাতে এটি <webXML> ওয়েব \ ওয়েব-ইনফ \ ওয়েব.এক্সএমএল </ ওয়েবে এক্সএমএল হবে
ভিক টরিয়াস

আপনার উত্তরটি চেষ্টা করেও তবুও একই ত্রুটিটি পেয়েছি তার পরিবর্তে আমি এই "সি: \ ব্যবহারকারীগণ \ xxxx \ ভিডিওগুলি-মাভেন-প্রজেক্টস \ আমার-প্রকল্প \ src \ ওয়েব অ্যাপ \ ওয়েব-আইএনএফ" করেছি এবং ভাল কাজ করেছি। সমস্যাটি কী তা আমি জানি না। এটা আমার ভাগ্য। আপনাকে ধন্যবাদ
বনি জোয়েল

1
দুর্দান্ত কাজ করেছেন!
থেক্স

145
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

এই সমাধানটি আমার পক্ষে কাজ করে (আমি আগে ২.২ ব্যবহার করছিলাম)। এছাড়াও, আমি সার্লেট ৩.০ এর জন্য জাভা ভিত্তিক কনফিগারেশন ব্যবহার করছি এবং ওয়েব.এক্সএমএল ফাইলের দরকার নেই।


সেই প্লাগইনটির 3.x সংস্করণগুলির এখন ব্যর্থআনমিসিং ওয়েবেএক্সএক্সএল এমএল ডিফল্ট রয়েছে false। সুতরাং, <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin> যথেষ্ট করা উচিত।
আইজেনকনুর

আমি যেমন ছিলাম ততই আমার পক্ষে কাজ করেছে এবং এখনও jboss-web.xml ব্যবহার করছি - ধন্যবাদ!
জেগ্লাস

আমার একটি প্রকল্প রয়েছে যার ওয়েব.এক্সএমএল নেই এবং এটি আমার জন্য কাজ করেছে। ম্যাভেন বিল্ড সফল।
ব্লুস্কি

81

এটি আমার পক্ষেও পুরোপুরি কাজ করে।

<project>

.....

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>WebContent\WEB-INF\web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4
উপরের কাজগুলি যখন দিকগুলি সক্ষম থাকে এবং ওয়েব কনটেন্টটি এমন ফোল্ডার যেখানে ওয়েব.এক্সএমএল প্রবেশ করে
রাম

32

এর কারণ আপনি আপনার ওয়েব প্রকল্পে ওয়েব.এক্সএমএল অন্তর্ভুক্ত করেন নি এবং ম্যাভেন ব্যবহার করে যুদ্ধ তৈরির চেষ্টা করছেন না। এই ত্রুটি সমাধান করার জন্য, আপনাকে সেট করতে হবে failOnMissingWebXml করার মিথ্যা pom.xml ফাইলে।

উদাহরণ স্বরূপ:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>   
</properties>

আরও বিশদের জন্য দয়া করে ব্লগটি দেখুন: https://ankurjain26.blogspot.in/2017/05/error-as সমাবেশling-war-webxML-attribute.html


23

আপনি যদি জাএমএল-ভিত্তিক জাভা ভিত্তিক কনফিগারেশনে এক্সএমএল ভিত্তিক স্থানান্তরিত হয়ে থাকেন এবং আপনি ওয়েব অ্যাপ্লিকেশনআইনিটিয়ালাইজার প্রয়োগ করে ওয়েব.এক্সএমএলটির প্রয়োজনীয়তা সরিয়ে ফেলেছেন, কেবল ওয়েব.এক্সএমএল ফাইল উপস্থিত থাকার প্রয়োজনীয়তা সরিয়ে ফেলুন।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        ... 
    </configuration>

অনুরূপ উত্তর আগে দেওয়া হয়েছিল
পল ভেরেস্ট

এটি একটি প্রসঙ্গ দেয় যেখানে ঠিক রেখাটি যেতে হবে।
foo

20

কাজ করার জন্য আমার ওয়েবএক্সএমএল ট্যাগের মানটি দেখতে দেখতে এটির দরকার ছিল:

<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 

ঠিক! শুরুতে স্ল্যাশ না হওয়া পর্যন্ত আমি এটি বুঝতে <warSourceDirectory>\src\main\webapp</warSourceDirectory>পারি না যে কাজ করে না! V2.6 এ নেই
অ্যাডাম

19

আমার ঠিক একই সমস্যা ছিল এবং আমি এটি এর মতো সমাধান করেছি:

নামে একটি নতুন ফোল্ডার তৈরি করুন WEB-INFঅধীনে src/main/webbappতারপর

আপনার প্রকল্পে ডান ক্লিক করুন -> জাভা ইই সরঞ্জামসমূহ -> বিস্তৃত বিবরণী স্ট্রাব উত্পন্ন করুন

এটি আপনার উত্পন্ন করা উচিত web.xml

আমি আশা করি এটি আপনার সমস্যার সমাধানের মাধ্যমে সহায়তা করে: ডি


13

দেখে মনে হচ্ছে আপনি সঠিক স্থানে ওয়েব.এক্সএমএল রেখেছেন, তবুও তবুও, এই ত্রুটিটি প্রায়শই ডিরেক্টরি কাঠামোটি ম্যাভেনের দেখতে প্রত্যাশার সাথে মেলে না বলে হয়ে থাকে। উদাহরণস্বরূপ, যদি আপনি কোনও মাউন্টেনের সাথে নির্মাণের চেষ্টা করছেন এমন একটি অ্যালিপিস ওয়েব অ্যাপ শুরু করে থাকেন।

যদি এটি সমস্যা হয় তবে একটি দ্রুত সমাধান হ'ল একটি
src/main/javaএবং একটি
src/main/webappডিরেক্টরি তৈরি করা (এবং অন্যান্য ডিরেক্টরিগুলির যদি আপনার প্রয়োজন হয়) এবং কেবল আপনার ফাইলগুলি সরিয়ে নেওয়া।

এখানে মাভেন ডিরেক্টরি লেআউটটির একটি সংক্ষিপ্তসার রয়েছে: http://maven.apache.org/guides/intr پيداوار/intr پيداوار-to-the-standard-directory-layout.html


6

আপনি যদি ডিফল্ট প্রকল্পের পথ পরিবর্তন করেন তবে আপনাকে অবশ্যই ওয়েব.এক্সএমএল ফাইলের অবস্থান নির্দিষ্ট করতে হবে:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <webXml>src\main\web\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>

6

ডকুমেন্টেশন অনুসারে, এটি বলে: ওয়েব.এক্সএমএল ফাইল অনুপস্থিত থাকলে বিল্ডটি ব্যর্থ হবে কি না। আপনি যদি ওয়েব.এক্সএমএল ফাইল ছাড়াই ওয়ার ওয়ার্ট তৈরি করতে চান তবে মিথ্যাতে সেট করুন। আপনি যদি কোনও ওভারলে নির্মাণ করছেন যা কোনও ওয়েব.এক্সএমএল ফাইল নেই সে ক্ষেত্রে এটি কার্যকর হতে পারে। ডিফল্ট মান: সত্য। ব্যবহারকারীর সম্পত্তি হ'ল: ব্যর্থনমিশন ওয়েবে এক্সএমএল।

<plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <extensions>false</extensions>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>            </plugin>

আশা করি এটি আরও পরিষ্কার হয়ে গেছে


5

এটা খুবই আমার জন্য কাজ করেন।

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webXml>WebContent\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>

এটি কাজ করে, কিন্তু লগ এখন বলে: WEB-INF\web.xml already added, skipping। এটি অদ্ভুত, যখন আমি এটি যুক্ত করব না, আমি ত্রুটি পেয়েছি।
ইরওয়াইনবার্ড

ইরভিনাইনহার্ড হিসাবে একই। WEB-INF\web.xml already added, skipping
প্রচি 20

4

এমভিএন-ওয়ার-প্লাগইন ২.৩ এগুলি ঠিক করে:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
        </plugin>
        ...

4

পরীক্ষার সার্ভারে আমার একই ত্রুটি হয়েছিল তবে স্থানীয়ভাবে নয়। কয়েক মিনিটের পরে, আমি আবিষ্কার করেছি যে আইডিই pom.xML এর সাথে সিঙ্ক্রোনাইজ করা হয়নি। আমি এখানে এটি কীভাবে সমাধান করব:

Eclipse দিয়ে মোতায়েনের বিবরণটিকে পুনরায় জেনারেট করুন

  1. আপনার প্রকল্প ফোল্ডারে রাইট ক্লিক করুন
  2. প্রাসঙ্গিক মেনুতে, "জাভা ইই সরঞ্জামসমূহ" চয়ন করুন তারপরে "ডিপ্লোয়মেন্ট বর্ণনাকারী স্টাব উত্পন্ন করুন" ওয়েব.এক্সএমএল তৈরি করুন
  3. এটি ওয়েব.এক্সএমএল তৈরি করবে। প্রকল্প কাঠামোতে ওয়েব.এক্সএমএল

ইন্টেলিজিজের সাথে মোতায়েনের বিবরণটি পুনরায় তৈরি করুন

  1. আপনার প্রকল্প ফোল্ডারে রাইট ক্লিক করুন
  2. প্রাসঙ্গিক মেনুতে, "ওপেন মডিউল সেটিংস" নির্বাচন করুন, তারপরে ওয়েব স্থাপনার বিবরণী যুক্ত করতে + ক্লিক করুন। স্থাপনার বিবরণী তৈরি করুন
  3. তারপরে আপনি আপনার বর্ণনাকারী বা ওয়েব উত্স ডিরেক্টরি এবং ডানদিকে দিক পরিবর্তন করতে পারেন ।
  4. তারপরে আপনি এমন কিছু পাবেন: প্রকল্প কাঠামো

1
এবং নেটবিনে আপনি যাবেন: প্রজেক্ট নোডটি ডান ক্লিক করুন> নতুন> অন্যান্য> ওয়েব> স্ট্যান্ডার্ড ডিপ্লোয়মেন্ট বিবরণী (ওয়েব.এক্সএমএল)।
আবছা

2

নিশ্চিত করুন যে প্রকল্প ফোল্ডারে pom.xML সঠিকভাবে স্থাপন করা হয়েছে। এবং লক্ষ্য ফোল্ডারের ভিতরে বা অন্য কোথাও নেই।

দেখে মনে হচ্ছে pom.xML অপেক্ষাকৃত প্রান্তিক নয়।


2

আপনার ফোল্ডারের কাঠামোটি কি এমনভাবে পরিবর্তিত হয়েছিল যাতে ফাইলটি আর /src/main/webapp/WEB-INF/web.xMLথাকে না ?

এই সমস্যাটি সমাধান করার জন্য, আমি আমার ওয়েব ফোল্ডারটিকে ওয়েব অ্যাপ নাম দিয়েছি এবং এটিকে এসআরসি / প্রধানের মধ্যে রেখেছি। ম্যাভেন এ ডিফল্ট ভাবে web.xml জন্য চেহারা বলে মনে হয় /src/main/webapp/WEB-INF/web.xml । আপনি যদি এটি করেন তবে আপনার ওয়েব স্পেসে স্পষ্টভাবে বলার দরকার নেই যে ওয়েব.এক্সএমএল কোথায়। এবং যদি আপনি নিজের ফোল্ডারের কাঠামো পরিবর্তন করে থাকেন এবং আপনার বিল্ডটি সম্প্রতি কাজ বন্ধ করে দেয় তবে এটি কারণ হতে পারে।

দ্রষ্টব্য: এটি একটি পুরাতন পোস্ট তবে পোস্ট করা সমাধানগুলি কেন একটি ওয়ার্কিং বিল্ড হঠাৎ কাজ বন্ধ করে দেবে তা নির্দেশ করে না।


2

অনেকগুলি উত্তর রয়েছে এবং তাদের বেশিরভাগই কাজ করবে, তবে আমি আরও একটি পয়েন্ট যুক্ত করব, যা আমার মনে হয়, এর কম গুরুত্ব নেই।
আপনার লগ বার্তা অনুযায়ী আপনি ব্যবহার করছেন maven। মাভেন একটি প্রকল্প পরিচালনা-বিল্ড টুল যা কিছু কনভেনশনগুলির উপর ভিত্তি করে। এটি প্রকল্পটি তৈরি করে, সঠিক ডিরেক্টরি কাঠামো তৈরি করে এবং ফাইলগুলিকে সংশ্লিষ্ট ডিরেক্টরিতে রাখে যা Sun Microsystems Directory Structure Standardজাভা ইই / ওয়েব অ্যাপ্লিকেশনগুলির সাথে সামঞ্জস্যপূর্ণ ।

আপনি মভেন প্লাগইনগুলি, প্রকল্পের মূল ডিরেক্টরিটি পরিবর্তন / পুনরায় কনফিগার করা ইত্যাদিসহ অনেক কিছুই অন্তর্ভুক্ত করতে পারেন তবে আপনি করতে পারেন এমন একটি সহজ পদক্ষেপ রয়েছে এবং আপনার প্রকল্পটি ভাল হওয়া উচিত। কেবল আপনার web.xmlনীচে রাখুন src\main\webapp\WEB-INF\এবং এর সাথে প্রকল্পটি তৈরি করার চেষ্টা করুনmvn package

আমি আশা করি এটি এই সমস্যায় আরও খানিকটা আলোক যুক্ত করে।


1

এই ত্রুটিটি ঘটেছে কারণ আপনি ম্যাভেনকে যুদ্ধের জন্য ফাইলগুলি পকেজ করতে বলেছেন ।

<packaging>war</packaging>

আপনার কি সত্যই যুদ্ধ দরকার? যদি না হয়, সেখানে জার রাখুন। এখানে পূর্ণ কোড:

<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>
    <version>1.0-SNAPSHOT</version>

    <groupId>com.your.groupid</groupId>
    <artifactId>artifactid</artifactId>
    <packaging>jar</packaging>

জার এবং যুদ্ধ সম্পূর্ণ আলাদা গল্প। আমি মনে করি এখানে যুদ্ধের প্রয়োজন, কারণ সংরক্ষণাগারটি ওয়েব ধারকটিতে স্থাপন করা হচ্ছে এবং একক জার অ্যাপ্লিকেশন হিসাবে পৃথকভাবে চালানো হয় না।
জর্জি সিক্লৌরি

1

20 2020 সাল থেকে ব্যর্থঅনমিসিং ওয়েবে এক্সএমএল

অন্যান্য সমস্ত উত্তর অপ্রচলিত হতে পারে কারণ মেভেন-ওয়ার-প্লাগইন দ্বারা ব্যবহৃত ডিফল্ট মান পরিবর্তিত হয়েছিল :

৩.১.০ দিয়ে শুরু করে, এই সম্পত্তিটি সার্ফললেট API.০ এপিআই বা আরও নতুনর উপর নির্ভর করে যদি মিথ্যাতে ডিফল্ট হয়।

সুতরাং শুধুমাত্র জিনিস আপনাকে যা করতে হবে যোগ হয়

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

উদাহরণ:

<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>foo</groupId>
    <artifactId>bar</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <properties>
        <tomcat.ignorePackaging>true</tomcat.ignorePackaging>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.