আমি সম্প্রতি নিজেকে ভাবছিলাম যে স্থিতিস্থাপক অনুসন্ধানটি কেন শেড করে এবং এর কয়েকটি নির্ভরতাগুলির কয়েকটি (তবে সমস্ত নয়) সরিয়ে দেয়। প্রকল্পের রক্ষণাবেক্ষণকারীর কাছ থেকে এখানে একটি ব্যাখ্যা দেওয়া হয়েছে, @ কিমচি :
শেডিং অংশটি ইচ্ছাকৃত, ছায়াময় গ্রন্থাগারগুলি যা আমরা ইলাস্টিকসर्चে ব্যবহার করি তা ইলাস্টিকের অনুসন্ধানের সমস্ত উদ্দেশ্য এবং উদ্দেশ্য অংশের জন্য হয়, ব্যবহৃত সংস্করণটি কীভাবে ইলাস্টিকসার্কটি প্রকাশ করে এবং কীভাবে এটি গ্রন্থাগারটি কাজ করে তার অভ্যন্তরের উপর ভিত্তি করে গ্রন্থাগারটি কীভাবে ব্যবহার করে (এবং সংস্করণগুলির মধ্যে পরিবর্তন হয়), নেট এবং পেয়ারা দুর্দান্ত উদাহরণ।
বিটিডব্লিউ, আমি ইলাস্টিকের বেশ কয়েকটি জার সরবরাহ করতে আসলেই কোনও সমস্যা নেই, একটি লুসিনের ছায়াযুক্ত নয় এবং একটি লুসিন শেডযুক্ত। যদিও maven দিয়ে এটি করবেন তা নিশ্চিত নয়। আমি এমন কোনও সংস্করণ সরবরাহ করতে চাই না যা উদাহরণস্বরূপ নেট / জ্যাকসনকে ছায়া দেয় না, কারণ তাদের কাছে গভীর ভীতি ব্যবহারের স্থিতিস্থাপক ব্যবহার রয়েছে (উদাহরণস্বরূপ, বর্তমানের ব্যতীত নেটটির আগের কোনও সংস্করণ সহ আসন্ন বাফারিং উন্নতি ব্যবহার করে) বাস্তবে যথেষ্ট কম ব্যবহারের তুলনায় বেশি মেমরি ব্যবহার করুন)।
- https://github.com/elasticsearch/elasticsearch/issues/2091#issuecomment-7156766
এবং আরেকজন এখানে ড্রয়ার থেকে :
শেডিংটি আমাদের কোডের কাছে আমাদের নির্ভরতা (বিশেষত নেট, লুসিন, পেয়ারা) কাছে রাখা জরুরী যাতে প্রবাহ সরবরাহকারী পিছিয়ে থাকলেও আমরা কোনও সমস্যা সমাধান করতে পারি। এটি সম্ভব হয় আমরা কোডের সংশোধিত সংস্করণগুলি বিতরণ করব, যা আপনার নির্দিষ্ট ইস্যুতে সহায়তা করবে (উদাহরণস্বরূপ # 2091), তবে আমরা এই মুহুর্তে ছায়াযুক্ত নির্ভরতাগুলি সরাতে পারি না। আরও ভাল সমাধান না হওয়া পর্যন্ত আপনি আপনার উদ্দেশ্যে ES এর স্থানীয় সংস্করণ তৈরি করতে পারেন।
- https://github.com/elasticsearch/elasticsearch/pull/3244#issuecomment-20125452
সুতরাং, এটি এক ব্যবহারের কেস। উদাহরণস্বরূপ উদাহরণ হিসাবে, নীচে ইলাস্টিকসার্কের pom.xML (v0.90.5) তে ম্যাভেন-শেড-প্লাগইন কীভাবে ব্যবহৃত হয় তা নীচে দেওয়া হয়েছে। artifactSet::include
লাইন এটা নির্দেশ কি পণ্য JAR- র (মূলত, তারা আনজিপ করা হয় এবং এবং elasticsearch নিজস্ব শ্রেণীর পাশাপাশি পুনরায় প্যাকেজ যখন লক্ষ্য elasticsearch বয়াম উত্পাদিত হয়। (যদি আপনি ইতিমধ্যে জানেন না বা টান নির্ভরতা, এক বয়াম ফাইল প্রোগ্রামের ক্লাস, রিসোর্স ইত্যাদিসহ একটি জিপ ফাইল এবং কিছু মেটাডেটা it's এটি কীভাবে একসাথে রাখা হয়েছে তা দেখতে আপনি একটি নিষ্কাশন করতে পারেন))
relocations::relocation
এই ক্ষেত্রে তাদের অধীনে আনয়ন - লাইন ছাড়া প্রতিটি ক্ষেত্রে তারা নির্দিষ্ট বদল নির্ভরতা এর ক্লাস প্রযোজ্য হলেও, একই রকম org.elasticsearch.common
।
পরিশেষে filters
বিভাগটি লক্ষ্য জেআর থেকে কিছু স্টাফ বাদ দেয় যা সেখানে হওয়া উচিত নয় - যেমন জেআর মেটাডেটা, পিপড়া বিল্ড ফাইল, টেক্সট ফাইল ইত্যাদি some
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<minimizeJar>true</minimizeJar>
<artifactSet>
<includes>
<include>com.google.guava:guava</include>
<include>net.sf.trove4j:trove4j</include>
<include>org.mvel:mvel2</include>
<include>com.fasterxml.jackson.core:jackson-core</include>
<include>com.fasterxml.jackson.dataformat:jackson-dataformat-smile</include>
<include>com.fasterxml.jackson.dataformat:jackson-dataformat-yaml</include>
<include>joda-time:joda-time</include>
<include>io.netty:netty</include>
<include>com.ning:compress-lzf</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>com.google.common</pattern>
<shadedPattern>org.elasticsearch.common</shadedPattern>
</relocation>
<relocation>
<pattern>gnu.trove</pattern>
<shadedPattern>org.elasticsearch.common.trove</shadedPattern>
</relocation>
<relocation>
<pattern>jsr166y</pattern>
<shadedPattern>org.elasticsearch.common.util.concurrent.jsr166y</shadedPattern>
</relocation>
<relocation>
<pattern>jsr166e</pattern>
<shadedPattern>org.elasticsearch.common.util.concurrent.jsr166e</shadedPattern>
</relocation>
<relocation>
<pattern>org.mvel2</pattern>
<shadedPattern>org.elasticsearch.common.mvel2</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml.jackson</pattern>
<shadedPattern>org.elasticsearch.common.jackson</shadedPattern>
</relocation>
<relocation>
<pattern>org.joda</pattern>
<shadedPattern>org.elasticsearch.common.joda</shadedPattern>
</relocation>
<relocation>
<pattern>org.jboss.netty</pattern>
<shadedPattern>org.elasticsearch.common.netty</shadedPattern>
</relocation>
<relocation>
<pattern>com.ning.compress</pattern>
<shadedPattern>org.elasticsearch.common.compress</shadedPattern>
</relocation>
</relocations>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/license/**</exclude>
<exclude>META-INF/*</exclude>
<exclude>META-INF/maven/**</exclude>
<exclude>LICENSE</exclude>
<exclude>NOTICE</exclude>
<exclude>/*.txt</exclude>
<exclude>build.properties</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>