সার্ভলেট 3.0 এপিআইয়ের জন্য মাভেন নির্ভরতা?


229

সার্ভলেট 3.0 এপিআই লোড করতে আমি মাভেন 2 কে কীভাবে বলতে পারি?

আমি চেষ্টা করেছিলাম:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0</version>
    <scope>provided</scope>
</dependency>

আমি http://repository.jboss.com/maven2/ ব্যবহার করি তবে কী ভাণ্ডারটি সঠিক হবে?

সংযোজন:

এটি পুরো জাভা ইই 6 এপিআই এবং নিম্নলিখিত সেটিংসের জন্য নির্ভরতার সাথে কাজ করে:

<repository>
    <id>java.net</id>
    <url>http://download.java.net/maven/2</url>
</repository>

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

আমি কেবল সার্ভলেট এপিআইকে নির্ভরতা হিসাবে যুক্ত করতে পছন্দ করব তবে "ব্র্যাবস্টার" জাভা ইই 6 প্রোফাইল দ্বারা পৃথক নির্ভরতা প্রতিস্থাপন করা ঠিক হতে পারে। এমন কোনও উত্স আছে যা এই অনুমানকে নিশ্চিত করে?


84
কোন উত্স নেই, জাভা ডটকম / ম্যাভেন / ২ ভাণ্ডারগুলিতে কোনও জাভাদোক নেই। ওরাকল, জাহান্নামে যাও!
স্টেপঞ্চেগ

2
সার্লেলেট-এপি-র পরিবর্তে জাভা-এপি ব্যবহার করা আপনাকে জাভ্যাক্স.সার্লেট. সার্ভলেট কনটেক্সট-এর একই সংস্করণ দেয় না। আমি বসন্তের কাঠামোটি ৩.১ ব্যবহার করছি এবং গতিশীল প্রেরণকারী (টিকা) ব্যবহার করছি। সাদের উত্তরটি আমার পক্ষে একমাত্র উত্তর that আপনার কাছে পাস্কালের সাথে আসলেই যাওয়া উচিত নয় কারণ এটি আরও সাধারণ বলে মনে হচ্ছে। হেক .. গ্রেড গ্রেড প্রহার নির্ভরতাগুলি সমাধানে মারে।
মুকুস

OMG এর, তারা পরিবর্তিত হস্তনির্মিত বস্তু নাম থেকে servlet-apiথেকে javax.servlet-api। আধা ঘন্টা "ডিবাগিং" হারিয়েছে ...: /
ইনসান-ই

উত্তর:


116

আমি কেবল সার্ভলেট এপিআইকে নির্ভরতা হিসাবে যুক্ত করতে পছন্দ করব,

সত্যি কথা বলতে কি আমি বুঝতে পারছি না কেন তবে কিছু মনে করবেন না ...

ব্র্যাবস্টার পৃথক নির্ভরতা জাভা ইই 6 প্রোফাইল দ্বারা প্রতিস্থাপন করা হয়েছে। এমন কোনও উত্স আছে যা এই অনুমানকে নিশ্চিত করে?

জাভা নেটওয়্যার থেকে প্রাপ্ত মাভেন সংগ্রহশালাটি ওয়েবপ্রোফাইলের জন্য নিম্নলিখিত নিদর্শনগুলি সরবরাহ করে:

<repositories>
  <repository>
    <id>java.net2</id>
    <name>Repository hosting the jee6 artifacts</name>
    <url>http://download.java.net/maven/2</url>
  </repository>
</repositories>        
<dependencies>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

এই জারে সার্লেটলেট 3.0, ইজেবি লাইট 3.1, জেপিএ 2.0, জেএসপি 2.2, ইএল 1.2, জেএসটিএল 1.2, জেএসএফ 2.0, জেটিএ 1.1, জেএসআর -45, জেএসআর-250 রয়েছে।

তবে আমার জানা মতে, কিছুই এটিকে বলতে দেয় না যে এই এপিআইগুলি আলাদাভাবে বিতরণ করা হবে না (জাভা ডটনে বা অন্য কোথাও)। উদাহরণস্বরূপ (ঠিক আছে, এটি কোনও বিশেষ ক্ষেত্রে হতে পারে), জেএসএফ ২.০ এপিআই পৃথকভাবে পাওয়া যায় (জাভা.এন.পি. সংগ্রহস্থলে):

<dependency>
   <groupId>com.sun.faces</groupId>
   <artifactId>jsf-api</artifactId>
   <version>2.0.0-b10</version>
   <scope>provided</scope>
</dependency>

এবং প্রকৃতপক্ষে, আপনি সেখানjavax.servlet-3.0.jar থেকে এখানে এসে নিজের সংগ্রহস্থলে এটি ইনস্টল করতে পারেন।


3
একটি ছোট সংশোধন: জাভা-ওয়েব-এপি-তে EL 2.2 (ইউনিফাইড এক্সপ্রেশন ল্যাঙ্গুয়েজ 2.2) অন্তর্ভুক্ত রয়েছে, EL 1.2 নয়
অ্যান্ড্রে

1
... এবং গ্রেড ব্যবহারের জন্য: 'জাভাক্স: জাভা-ওয়েব-এপিআই: 6.0' সংকলন করুন
রবার্ট ক্রিশ্চিয়ান

1
মনে রাখবেন যে javaee-web-apiকেবলমাত্র পদ্ধতি স্টাবগুলি রয়েছে (কোনও বাইট কোড নেই)। আপনি এই নির্ভরতা providedসুযোগের বাইরে ব্যবহার করতে পারবেন না সে কারণেই আমি সাদের পরামর্শকেই প্রাধান্য দিই।
রাফায়েল

2
@ পাসকল - "আমি কেবল সার্ভলেট এপিআইকে নির্ভরতা হিসাবে যুক্ত করতে পছন্দ করব" - আপনি যদি এমনটি করেন যে আপনি যদি খাঁটি সার্লেট পাত্রে (টমক্যাট, জেটি) বনাম কোনও জেই অনুগত কনটেইনার (টোমইই, ওয়াইল্ডফ্লাই ইত্যাদি) নিয়ে কাজ করছেন
YoYo

1
javaee ওয়েব-API আপডেট করা হয়েছে<version>7.0</version>
OJVM

461

এটি সম্প্রতি যুক্ত হয়েছে বলে মনে হচ্ছে:

http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
</dependency>

29
আপনার যোগ করা উচিত <স্কোপ> সরবরাহিত </স্কোপ>
সেরকান আরকুউ

1
আরে, এটি ঠিকঠাক কাজ করে তবে আমি নিশ্চিত নই এটি ব্যবহারের সঠিক নির্ভরতা (উদাহরণস্বরূপ টমক্যাট with সহ); কারণটি হ'ল এই নির্ভরতার সাথে সংযুক্ত উত্সগুলি যখন আপনি আসলে ডিবাগিং করেন তখন আসলে কী চলছে তা মেলে না।
ইউজেন

5
@ তেজস্বীরানা প্রদত্ত সুযোগের অর্থ এটি যুদ্ধে প্যাকেজড নয়। নির্ভরতা সংকলন সময়ে পাওয়া যায়, আপনি এটি সার্ভার লাইব্রেরি ফোল্ডারে আশা করেন।
banterCZ

5
কেন এটি কেবল আর্টিক্ট আইডি পুনরায় ব্যবহার করেনি servlet-api? কারণ এটি <excludes>পুরানো আর্টিক্ট আইডি যুক্ত করা মজাদার (আপনার ক্লাসপথে পুরানো এবং নতুন সার্লেটলেট এপিআই উভয়ই আটকাতে যদি আপনার কোনও নির্ভরশীলতা এখনও পুরানোটির উপর নির্ভর করে)? :)
জেফ্রি দে স্মেট

3
এফওয়াইআই, সবচেয়ে সাম্প্রতিক সংস্করণটি javax.servlet-api-3.1.0। আপনার সার্লেট কন্টেইনারটি সেই সংস্করণটি পরিচালনা করতে পারে তা নিশ্চিত করুন। উদাহরণস্বরূপ হুল বিড়াল সংস্করণ 8 3.1 সব ব্যবস্থা করতে সক্ষম
বাসিল বাউরক

37

অথবা আপনি টর্কাট সার্ভার 7.0.X এর জন্য সরবরাহ করা সার্লেটলেট 3.0 এপিআই সহ সেন্ট্রাল ম্যাভেন সংগ্রহস্থলটি ব্যবহার করতে পারেন

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>7.0.21</version>
        <scope>provided</scope>
    </dependency>

এখান থেকে: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/


25

আমি যা ব্যবহার করি তা এখানে। এগুলির সবগুলিই কেন্দ্রের এবং তাদের উত্স রয়েছে।

টমক্যাট 7 এর জন্য (জাভা 7, সার্লেট 3)

দ্রষ্টব্য - সার্লেট, জেএসপি এবং ইএল এপিআইগুলি টমক্যাটে সরবরাহ করা হয়েছে। কেবল জেএসটিএল (যদি ব্যবহৃত হয়) ওয়েব অ্যাপ্লিকেশন দিয়ে বান্ডিল করা প্রয়োজন।

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>2.2.4</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

টমক্যাট 8 এর জন্য (জাভা 8, সার্লেট 3.1)

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>3.0.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

এটি কাজ করে তবে নির্ধারিত নির্ভরতাগুলি মাভেন বিভাগে অন্তর্ভুক্ত থাকে তবে WAR ফাইলে কখনই অন্তর্ভুক্ত হয় না কারণ সেগুলিকে "সরবরাহিত" হিসাবে চিহ্নিত করা হয়। কিন্তু ... আমি টমক্যাট লাইব ডিরেক্টরিতে জারগুলি ব্যবহার করার জন্য প্রকল্পটি কখনই পেতে পারি না, যদিও আমি এই টমক্যাট লাইব ডিরেক্টরিটি একিপেস বিল্ড পাথে অন্তর্ভুক্ত করেছি এবং সেগুলি সেখানে স্পষ্টভাবে দেখা যায়। আমার পম.এক্সএমএল কখনই এই টোম্যাট জারগুলি সমাধান করতে পারে না এবং সর্বদা Ma.০ সংস্করণ টোম্যাট সরবরাহের পরিবর্তে স্থানীয় মেভেন রেপো থেকে সার্লেট-এপিআই জেআর এর সংস্করণ 3.0.1 প্রয়োজন। আমি জানি না কেন এটি ... কেউ কি ব্যাখ্যা করতে পারেন?
গীব

<groupId> javax.servlet </groupId> <artifactId> javax.servlet-api </artifactId> এর কোন সংস্করণটি আমি টোমক্যাট 8.5 এর জন্য ব্যবহার করতে পারি?
Gog1nA

24

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

সংগ্রহস্থলের প্রয়োগ:

<repository>
  <id>jboss-public-repository-group</id>
  <name>JBoss Public Repository Group</name>
  <url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>

নির্ভরতা:

<!-- Servlet 3.0 Api Specification -->
<dependency>
   <groupId>org.jboss.spec.javax.servlet</groupId>
   <artifactId>jboss-servlet-api_3.0_spec</artifactId>
   <version>1.0.0.Beta2</version>
   <scope>provided</scope>
</dependency>

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

সম্পাদনা করুন:

এখানে সমতুল্য গ্লাসফিশ নির্ভরতা (যদিও উভয় নির্ভরতা কাজ করা উচিত, আপনি যে কোনও অ্যাপসার ব্যবহার করেন না কেন)।

<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.servlet</artifactId>
  <version>3.0</version>
  <scope>provided</scope>
</dependency>

1
কেন আমরা সংস্করণ উল্লেখ করতে হবে 1.0.0.Beta2, যদি এর সংস্করণ 3.0যে আমরা প্রয়োজন? এটি জটিল করে তোলে।
জেফ্রি দে স্মেট

9

অ্যাপাচি গেরোনিমো প্রকল্পটি ম্যাভেন সেন্ট্রাল রেপোতে একটি সার্লেটলেট 3.0 এপিআই নির্ভরতা সরবরাহ করে:

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_3.0_spec</artifactId>
    <version>1.0</version>
</dependency>

2
এটি কাজ করে, এবং সহজ উপায় বলে মনে হচ্ছে, ধন্যবাদ! BTW এ্যাপাচি গ্যারোনিমো হয়েছে আরো অনেক কিছু প্রস্তাব: mvnrepository.com/artifact/org.apache.geronimo.specs
stivlo

5

শুধু নতুনদের জন্য।

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

4

আমি সেপ্টেম্বর থেকে ডিজেনে সার্ভলেট 3.0 এপিআইয়ের জন্য একটি উদাহরণ পম পেয়েছি ।

আপনাকে http://download.java.net/maven/2/ এ java.net রেপো ব্যবহারের পরামর্শ দিন

সেখানে জাভা ইই এপিআই রয়েছে, উদাহরণস্বরূপ, পিওএম-র সাথে http://download.java.net/maven/2/javax/javaee-web-api/6.0/ এ দেখে মনে হচ্ছে তারা আপনার পরে কী হতে পারে, উদাহরণস্বরূপ :

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-web-api</artifactId>
  <version>6.0</version>
</dependency>

আমি অনুমান করছি যে নতুন 'প্রোফাইলগুলির' অংশ হিসাবে সামগ্রিক EE স্পেসের (যেমন জাভা EE 6 বনাম সার্লেটস 3.0) এর সংস্করণটির সাথে মিলে APIs এর সংস্করণ কনভেনশনগুলি পরিবর্তন করা হয়েছে। জেআর সন্ধান করে দেখে মনে হচ্ছে যে সমস্ত 3.0 সার্লেট স্টাফ রয়েছে। উপভোগ করুন!


ধন্যবাদ, এটি কাজ করে! কেবলমাত্র অবশিষ্ট প্রশ্নটি হল, যদি জাভা EE 6 প্রোফাইল পৃথক libs প্রতিস্থাপন করে। (আমার প্রশ্নে সংযোজন দেখুন)
30'09

আপনি যদি এর উপর নির্ভর করেন তবে আপনি পোর্টেবল যুদ্ধ করতে পারবেন না (যেটি জবস, টমক্যাট, জেটি, ...) তে কাজ করে, কারণ টমক্যাট / জেটির জন্য আপনাকে সেই নির্ভরতার অংশটি সরবরাহ করতে হবে (সার্ভলেট) এবং এর অংশটি সরবরাহ করা হয়নি (সিডিআই), যা অসম্ভব।
জেফ্রি দে স্মেট

3

জাভা ইই 6 নির্ভরতা অন্তর্ভুক্ত করার জন্য একটি সুবিধাজনক উপায় (জেবস প্রস্তাবিত) নীচে প্রদর্শিত হবে। ফলস্বরূপ নির্ভরতা পৃথকভাবে স্থাপন করা হয় (সমস্ত জাভা-ওয়েব-এপি হিসাবে একটি জারে নয়), উত্স ফাইল এবং লাইব্রেরির জাভাদোকগুলি মভেন সংগ্রহশালা থেকে ডাউনলোড করার জন্য উপলব্ধ।

<properties>
    <jboss.javaee6.spec.version>2.0.0.Final</jboss.javaee6.spec.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-web-6.0</artifactId>
        <version>${jboss.javaee6.spec.version}</version>
        <scope>provided</scope>
        <type>pom</type>
    </dependency>
</dependencies>

শুধুমাত্র স্বতন্ত্র নির্ভরতা অন্তর্ভুক্ত করতে, dependencyManagementবিভাগ এবং সুযোগটি importব্যবহার করা যেতে পারে:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.spec</groupId>
                <artifactId>jboss-javaee6-specs-bom</artifactId>
                <version>${jboss.javaee6.spec.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- No need specifying version and scope. It is defaulted to version and scope from Bill of Materials (bom) imported pom. -->
        <dependency>
            <groupId>org.jboss.spec.javax.servlet</groupId>
            <artifactId>jboss-servlet-api_3.0_spec</artifactId>
        </dependency>
    </dependencies>

-3

এই কোডটি ব্যবহার করে দেখুন ...

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>

আলফা পর্যায়ে নির্ভরতা উত্পাদন প্রয়োগের জন্য সর্বদা উপযুক্ত নয়।
স্টিফান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.