मैने-मैन-प्लगइन और मैवेन-एजेबी-प्लगइन के साथ मेवेन-कान-प्लगइन का सफलतापूर्वक उपयोग और चलाने के लिए एक एप्लिकेशन को चलाने के लिए मैवेन-कान-प्लगइन का उपयोग किया है जेबॉस एएस 7 के लिए ईएआर।मैवेन-वॉर-प्लगइन में मेनिफेस्ट क्लास-पथ को सही तरीके से कैसे सेट करें
.
|
|-- Patrac-ear
| `-- pom.xml
|-- Patrac-ejb
| `-- pom.xml
|-- Patrac-web
| `-- pom.xml
`-- pom.xml
मैं समझ नहीं है जब मैं आवेदन की तैनाती में कुछ कष्टप्रद चेतावनी संदेश को रोकने के लिए कैसे:
.
|-- META-INF
| |-- application.xml
| |-- MANIFEST.MF
| `-- maven
| `-- com.patrac
| `-- Patrac-ear
| |-- pom.properties
| `-- pom.xml
|-- Patrac-ejb-1.0-SNAPSHOT.jar
`-- Patrac-web-1.0-SNAPSHOT.war
आवेदन स्रोत कोड निर्देशिका में, poms इस प्रकार स्थित हैं
!12:32:03,958 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) Class Path entry richfaces-components-ui-4.0.0.Final.jar in "/content/Patrac.ear/Patrac-web-1.0-SNAPSHOT.war" does not point to a valid jar for a Class-Path reference.
12:32:03,970 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) Class Path entry richfaces-components-api-4.0.0.Final.jar in "/content/Patrac.ear/Patrac-web-1.0-SNAPSHOT.war" does not point to a valid jar for a Class-Path reference.
12:32:03,984 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) Class Path entry richfaces-core-api-4.0.0.Final.jar in "/content/Patrac.ear/Patrac-web-1.0-SNAPSHOT.war" does not point to a valid jar for a Class-Path reference.
12:32:03,989 WARN [org.jboss.as.server.deployment] (MSC service thread 1-2) Class Path entry richfaces-core-impl-4.0.0.Final.jar in "/content/Patrac.ear/Patrac-web-1.0-SNAPSHOT.war" does not point to a valid jar for a Class-Path reference.
Patrac-वेब-1.0-SNAPSHOT.war META-INF/MANIFEST.MF इस तरह दिखता है:
Manifest-Version: 1.0
Built-By: pgarner
Build-Jdk: 1.7.0_02
Class-Path: Patrac-ejb-1.0-SNAPSHOT.jar richfaces-components-ui-4.0.0.
Final.jar richfaces-components-api-4.0.0.Final.jar richfaces-core-api
-4.0.0.Final.jar richfaces-core-impl-4.0.0.Final.jar cssparser-0.9.5.
jar sac-1.3.jar guava-r08.jar
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
ईजेबी क्लास-पथ प्रविष्टि को ईजेबी मॉड्यूल के लिए पोर्टेबिलिटी के लिए उपस्थित होना आवश्यक है, और समृद्ध, सीएसएसपार्सर और अमरूद वर्ग-पथ प्रविष्टियां युद्ध के मैनिफेस्ट में नहीं होनी चाहिए।
समस्या यह है कि मेरा युद्ध सभी जेएआर पर निर्भर करता है, जिनमें से कुछ WEB-INF/lib
(रिचफेसेस) में रहते हैं, और एक जेएआर, Patrac-ejb-1.0-SNAPSHOT.jar
, जो ईएआर की मूल निर्देशिका में रहता है। प्रत्येक निर्भरता को Patrac-web/pom.xml में दर्ज करने की आवश्यकता है, लेकिन प्रत्येक निर्भरता प्रकट में प्रकट नहीं होनी चाहिए।
मैवेन जार को सही जगहों पर रखता है, लेकिन यह सभी जारों के लिए मेनिफेस्ट में क्लास-पथ प्रविष्टियां रखता है। यह ऐसा नहीं करना चाहिए। इसे केवल Patrac-ejb-1.0-SNAPSHOT.jar
के लिए प्रवेश करना चाहिए।
<!--
According to Java EE 6 spec, the application is portable if
Patrac-web.war's META-INF/MANIFEST.MF contains a Class-Path entry
for Patrac-ejb-1.0-SNAPSHOT.jar.
<optional>true</optional> is the flag that maven-war-plugin uses
to put the entry in MANIFEST.MF without copying Patrac-ejb-1.0-SNAPSHOT.jar
into WEB-INF/lib. This is what I want.
<scope>provided</scope> would cause maven-war-plugin to NEITHER
put the entry in MANIFEST.MF nor copy Patrac-ejb.jar into WEB-INF/lib,
which would not be good.
No tag at all would cause maven-war-plugin to BOTH put the entry in
MANIFEST.MF and copy Patrac-ejb.jar into WEB-INF/lib, which would
also not be good.
-->
<dependency>
<groupId>com.patrac</groupId>
<artifactId>Patrac-ejb</artifactId>
<type>ejb</type>
<optional>true</optional>
</dependency>
<!--
These two dependencies are used to copy
the other JAR files into WEB-INF/lib and there
should not be any class-path entries for such
JARs in MANIFEST.MF, in order to avoid the
error messages.
-->
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-components-ui</artifactId>
</dependency>
<dependency>
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
</dependency>
मैं सबसे हालिया मेवेन-युद्ध-प्लगइन संस्करण 2.2 का उपयोग कर रहा हूं। मैं MANIFEST.MF में क्लास-पथ प्रविष्टियों को न डालने के दौरान "गैर-ईजेबी" जेएआर को वेब-आईएनएफ/lib में डालने के लिए मेवेन-वॉर-प्लगइन कैसे कहूं?
आपके पास कोई भी सलाह या पॉइंटर्स की सराहना की जाती है।
संदर्भ:
[युद्ध प्रकट गाइड] (http के बारे में विशेष रूप से पढ़ने के लिए n.apache.org/plugins/maven-war-plugin/examples/war-manifest-guide।एचटीएमएल) 3 उदाहरण दिखाता है और एक नोट प्रदान करता है: "कोई तरीका नहीं दिखाया गया है कि वेब-आईएनएफ/lib में निर्भरता कैसे शामिल करें लेकिन मैनिफेस्ट क्लासपाथ में नहीं।" गाइड तब कहता है, "अधिक उदाहरणों के लिए [मैनफिस्ट के साथ काम करने के लिए मार्गदर्शिका] (http://maven.apache.org/guides/mini/guide-manifest.html) देखें।" यह दूसरा पृष्ठ मुझे वापस वॉर मैनिफेस्ट गाइड पेज पर संदर्भित करता है। मुझे उस उदाहरण का पालन करने में सक्षम होना चाहिए जो दिखाया नहीं गया है। –
आप वेब-आईएनएफ/lib में निर्भरता शामिल करना चाहते हैं लेकिन मैनिफेस्ट क्लासपाथ में नहीं? आपको इसकी आवश्यकता क्यों है? यदि आपके 'richfaces',' cssparser' और 'guava' ईएआर में छोड़ते हैं, तो इन निर्भरताओं को' प्रदत्त 'के रूप में चिह्नित किया जाना चाहिए। –
Richfaces et al WAR मॉड्यूल की निर्भरता की आवश्यकता है। इस प्रकार, वे वेब-आईएनएफ/lib में होना चाहिए। मेरी समझ यह है कि WEB-INF में JARs के लिए कोई क्लास-पथ प्रविष्टियां नहीं की जानी चाहिए क्योंकि ऐसी फ़ाइलें स्वचालित रूप से WAR के क्लास लोडर द्वारा लोड की जाती हैं। WAR मॉड्यूल के लिए JARs _external_ के लिए केवल क्लास-पथ प्रविष्टियां WAR के मेनिफेस्ट में दर्ज की जानी चाहिए। मेरे मामले में, ईजेबी जार के लिए एक प्रविष्टि की जानी चाहिए। यह प्रति जेईई स्पेक है। RichFaces et al WAR मॉड्यूल की निर्भरता आवश्यक है और इस प्रकार 'प्रदान की गई 'के रूप में चिह्नित नहीं किया जाना चाहिए। –