سؤال

أرغب في إضافة برنامج تشغيل Oracle jdbc إلى مشروعي باعتباره تبعية (نطاق وقت التشغيل) - ojdbc14.في موقع MVNrepository، التبعية المراد وضعها في POM هي:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

بالطبع هذا لا يعمل لأنه ليس موجودًا في المستودع المركزي الذي يستخدمه مخضرم.2 سؤال:

  1. كيف يمكنني العثور على مستودع (إن وجد) يحتوي على هذه القطعة الأثرية؟

  2. كيف يمكنني إضافته حتى يستخدمه Maven؟

هل كانت مفيدة؟

المحلول

كيف يمكنني العثور على مستودع (إن وجد) يحتوي على هذه القطعة الأثرية؟

لسوء الحظ، نظرًا للترخيص الثنائي، لا يوجد مستودع عام مع Oracle Driver JAR.يحدث هذا مع العديد من التبعيات ولكن ليس خطأ Maven.إذا وجدت مستودعًا عامًا يحتوي على JAR، فيمكنك التأكد من أن ذلك غير قانوني.

كيف يمكنني إضافته حتى يستخدمه Maven؟

تحتوي بعض ملفات JAR التي لا يمكن إضافتها لأسباب تتعلق بالترخيص على ملحق بوم الدخول في مافن سنترال الريبو.ما عليك سوى التحقق منها، فهي تحتوي على معلومات Maven المفضلة لدى البائع:

<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>

...وعنوان URL لتنزيل الملف وهو في هذه الحالةhttp://www.Oracle.com/technology/software/tech/Java/sqlj_jdbc/index.html.

بمجرد تنزيل JAR، ما عليك سوى إضافته إلى مستودع الكمبيوتر الخاص بك باستخدام (لاحظ أنني قمت بسحب معرف المجموعة والمعرف الأثري والإصدار من POM):

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
     -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true

المعلمة الأخيرة لإنشاء POM ستوفر عليك تحذيرات pom.xml

إذا كان فريقك لديه مستودع Maven محلي هذا الدليل قد يكون من المفيد تحميل JAR هناك.

نصائح أخرى

لأي سبب من الأسباب، لم أتمكن من تشغيل أي من الحلول المذكورة أعلاه.(ما زلت لا أستطيع).

ما فعلته بدلاً من ذلك هو تضمين الجرة في مشروعي (blech) ثم إنشاء تبعية "نظام" لها تشير إلى المسار إلى الجرة.ربما لا تكون هذه هي الطريقة الصحيحة للقيام بذلك، ولكنها تعمل.وهو يلغي حاجة المطورين الآخرين في الفريق (أو الشخص الذي يقوم بإعداد خادم البناء) إلى وضع الجرة في مستودعاتهم المحلية.

تحديث:يعمل هذا الحل بالنسبة لي عندما أقوم بتشغيل أدوات السبات.ومع ذلك، لا يبدو أنه يعمل على إنشاء ملف WAR.ولا يتضمن الملف ojdbc6.jar في ملف WAR الهدف.

1) قم بإنشاء دليل يسمى "lib" في جذر مشروعك.

2) انسخ ملف ojdbc6.jar هناك (أيًا كان اسم الجرة.)

3) قم بإنشاء تبعية تبدو كالتالي:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc</artifactId>
    <version>14</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name -->
</dependency>

قبيح، لكنه يعمل بالنسبة لي.

لتضمين الملفات الموجودة في ملف الحرب، أضف ما يلي إلى ملف pom

<build>
    <finalName>MyAppName</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${basedir}/src/main/java</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                            <include>**/*.css</include>
                            <include>**/*.html</include>
                        </includes>
                    </resource>
                    <resource>
                        <directory>${basedir}/lib</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                        <includes>
                            <include>**/*.jar</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

قم بتنزيل الجرة وضعها في مشروعك src/lib.يمكنك الآن استخدام البرنامج المساعد المثبت maven.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>install-oracle-jdbc</id>
            <goals>
                <goal>install-file</goal>
            </goals>
            <phase>clean</phase>
            <configuration>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0</version>
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
                <createChecksum>true</createChecksum>
                <file>${project.basedir}/src/lib/ojdbc6.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

الآن عليك فقط التنفيذ mvn clean مرة واحدة ويتم تثبيت Oracle lib في مستودع maven المحلي الخاص بك.

تعرض Oracle الآن مستودع Maven على maven.oracle.com ومع ذلك ، فأنت بحاجة إلى المصادقة.

يرى https://blogs.Oracle.com/WebLogicServer/entry/weblogic_server_and_the_Oracle

وفقًا للتعليقات الواردة في منشور المدونة، يجب أن يكون برنامج تشغيل ojdbc متاحًا في الإحداثيات التالية:

<groupId>com.oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>

محاولة مع:

<repositories>
    <!-- Repository for ORACLE ojdbc6. -->
    <repository>
        <id>codelds</id>
        <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
</repositories>
<dependencies> 
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
</dependencies> 

برنامج تشغيل Oracle JDBC متوفر الآن في مستودع Oracle Maven (وليس في Central).

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>

يتطلب مستودع Oracle Maven تسجيل المستخدم.يمكن العثور على التعليمات في:

https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-drivers-and-ucp-from-Oracle-maven-repository-without-ides

1.كيف يمكنني العثور على مستودع (إن وجد) يحتوي على هذه القطعة الأثرية؟

مثل ديفيد س لقد علق على السطر الذي اقتبسته في الوقت الذي أجبت فيه، ولم يعد موجودًا في اتفاقية ترخيص OTN الحالية (في الوقت الذي أكتب فيه الآن) التي قمت بربطها.ضع في اعتبارك هذه الإجابة فقط للإصدار الأقدم من الأداة، مثل 10.2.0.3.0 وما شابه.

الجميع برامج تشغيل قاعدة بيانات أوراكل JDBC يتم توزيعها تحت اتفاقية ترخيص OTN.

إذا قرأت اتفاقية ترخيص OTN ستجد شرط الترخيص هذا:

لا يجوز لك:
...
- توزيع البرامج ما لم تكن مصحوبة بتطبيقاتك؛
...

ولهذا السبب لا يمكنك العثور على جرة السائق في أي مستودع Maven عام، لأنه سيتم توزيعها بمفردها، وإذا حدث ذلك فسيكون انتهاكًا للترخيص.

إضافة التبعية:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

(أو أي إصدار أحدث) يجعل Maven يقوم بتنزيل ملف ojdbc14-10.2.0.3.0.pom فقط، وفي هذا البوم يمكنك أن تقرأ:

...
<licenses>
    <license>
        <name>Oracle Technology Network Development and Distribution License Terms</name>
        <url>http://www.oracle.com/technology/software/htdocs/distlic.html</url>
    </license>
</licenses>
...

الذي يعلمك بترخيص OTN.

2.كيف يمكنني إضافته حتى يستخدمه Maven؟

من أجل جعل التبعية المذكورة أعلاه تعمل وأنا أتفق معها هوغو المنتصر الذين كانوا يقترحون عليك هنا لتثبيت الجرة يدويًا في مستودع Maven المحلي الخاص بك (ملف .m2 الدليل) عن طريق تشغيل:

mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle 
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar

ولكن أريد أن أضيف ذلك مدة الترخيص أعلاه لا يقتصر فقط على المكان الذي لا يمكنك العثور فيه على جرة JDBC، ولكنه يحدد مكان تثبيته أيضًا!

في الحقيقة يجب أن يكون مستودع Maven المحلي الخاص بك خاصًا وغير مشترك لأنه إذا تمت مشاركتها فسيكون ذلك نوعًا من التوزيع الذي يتم فيه توزيع الجرة بمفردها، حتى لو كانت لمجموعة صغيرة من الأشخاص في شبكتك المحلية، وهذا يمثل انتهاك اتفاقية ترخيص OTN.

وعلاوة على ذلك أعتقد أنك يجب تجنب تثبيت JDBC jar في مدير مستودع شركتك (مثل اصطناعية أو العلاقة) كقطعة أثرية واحدة لأنه إذا تم تثبيتها، فسيتم توزيعها بمفردها، حتى لو كانت على الأشخاص في مؤسستك فقط، وهذا يمثل انتهاك اتفاقية ترخيص OTN.

يمكنك استخدام العلاقة لإدارة تبعيات الطرف الثالث بالإضافة إلى التبعيات في المستودعات القياسية المخضرمة.

حتى الآن، ليس من الممكن استخدام المستودعات المخضرمة.أنا أستخدم ivy كأداة لإدارة التبعية، لكني أستخدم أيضًا مستودعات ibiblio الخاصة بـ maven2.وهذا يعمل من أجل اللبلاب:

<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>

يمكن أن تكون تبعية Maven2 شيئًا من هذا القبيل:

<dependency> 
    <groupId>oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>10.2.0.2</version> 
</dependency>

لاحظ أنني حددت http://download.java.net/maven/2/ و http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependegency/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext] كمستودعات maven2 خارجية على إعدادات اللبلاب الخاصة بي.

اخبارسعيدة يا جماعة!أخيرًا يمكننا استخدام الريبو الرسمي لشركة Oracle:https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-drivers-and-ucp-from-Oracle-maven-repository-without-ides

تدعم بعض منتجات Oracle نشر العناصر المخضرمة إلى مستودع محلي.تحتوي المنتجات على دليل مكون إضافي/maven يحتوي على أوصاف لمكان العثور على تلك القطع الأثرية ومكان تخزينها.يوجد مكون إضافي من Oracle والذي سيقوم بالفعل بالتحميل.

يرى: http://docs.Oracle.com/middleware/1212/core/MAVEN/config_maven.htm

أحد المنتجات التي يمكن أن تشحن OJDBC بهذه الطريقة هو WLS، ولكنه يستخدم إحداثيات غريبة تمامًا:

<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.2-0-0</version>

أقوم بشحن مصدر مفتوح ضمن LGPLv2 وحتى بعد عدة محادثات عبر البريد الإلكتروني مع Oracle، لم يكن من الواضح ما إذا كان مسموحًا لي بشحن برنامج تشغيل JDBC الثنائي الخاص بهم مع التوزيع الخاص بي.تتعلق المشكلة بما إذا كانت رخصتي متوافقة مع شروط OTN الخاصة بهم، لذا اقترحوا أنه لا يُسمح لي بشحن السائق.من المفترض أن تكون مرتبطة بهذا الجزء

(ب) لتوزيع البرامج مع التطبيقات التي قمت بتطويرها على عملائك بشرط موافقة كل مرخص له على شروط الترخيص المتوافقة مع شروط هذه الاتفاقية

لذا، حتى إذا تمكنت من نشر برنامج التشغيل بشكل قانوني في مستودعك الحصري/المحلي، فلا يزال هناك قيود على ما يُسمح لك بفعله بهذه القطعة الأثرية.يبدو من السخف أنه حتى لو قمت بشحن برنامج التشغيل الخاص بهم في شكل ثنائي مع ملف ترخيص OTN الكامل، فما زلت لا أستطيع استخدامه ويجب أن أجبر المستخدمين على تنزيل برنامج تشغيل Oracle يدويًا والانتقال إلى مسار مكتبتي قبل أن يتمكنوا من استخدام برنامجي.

هناك ريبو واحد يوفر الجرة.في SBT أضف محللًا مشابهًا لهذا:"أوراكل سائق الريبو" في "http://dist.codehaus.org/mule/dependeency/maven2"

و التبعية:"اوراكل" % "ojdbc14" % "10.2.0.2"

يمكنك أن تفعل الشيء نفسه مع مخضرم.يتوفر pom.xml و jar (http://dist.codehaus.org/mule/dependeency/maven2/Oracle/ojdbc14/10.2.0.2/).

إذا كنت تستخدم Netbeans، فانتقل إلى التبعيات وقم بتثبيت الأداة يدويًا.حدد موقع ملف .jar الذي تم تنزيله، وقد تم ذلك.البناء النظيف سوف يحل أي مشاكل.

يمكنك العثور على نموذج مشروع بسيط لـ Github لاستخدام برنامج تشغيل Oracle JDBC في مشروع Maven هنا.

يمكنك العثور على جميع الشرح للتكامل المستمر الخاص بك + عينة وتشغيلها على Travis-CI.

تجريبي

من أجل التبعية

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>

يحاول

<repository>
    <id>mvnrepository</id>
    <url>http://nexus.saas.hand-china.com/content/repositories/rdc</url>
</repository>

تم حلها

  • يرجى القيام بالإعدادات التالية لحل الخطأ

يجب تمكين هذا المستودع لإيجاد Oracle 10.0.3.0 التبعية (يجب إجراء هذا الإعداد في BuildConfig.groovy grails.project.dependency.resolver = "ivy" // أو Ivy

استخدم أيضًا الإعداد التالي لتنزيل برنامج تشغيل Oracle لوقت الترجمة

وقت التشغيل "com.Oracle:ojdbc:10.2.0.3.0"

من المفترض أن يحل هذا مشكلتك لعدم العثور على برنامج تشغيل Oracle لتطبيق Grails


مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top