'mvn install' çalıştırırken veritabanı şemasını otomatik olarak oluşturabilmem için pom.xml adımı oluşturmaya çalışıyorum. Bunu yapmak için "maven-cayenne-plugin" kullanıyorum. Bu çıktıyı görebildiğim için eklenti (entegrasyon testi aşamasında) çağrılıyor. Ancak mojo istisna ile başarısız olur: (Bunu görmek için -e ve -X bayrağını kullandım). Geçiş kapsamındaki Derby JDBC sürücüleri için bağımlılık kapsamı (cayenne)
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
(denemek ve EmbeddedDriver kullanabilir ve olsun veya olmasın benim bağımlılık olarak 'derbyclient' ya da basitçe 'derby' eklerseniz aynı olsun).
Sorunu çoğaltması gereken bir pom.xml dosyası. Windows'ta MVN 3 kullanıyorum. [Apache Maven'in 3.0.4 (r1232337; 2012-01-17 08: 44: 56 + 0000)]
<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>com.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-modeler-plugin</artifactId>
<version>3.2M1</version>
</plugin>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-plugin</artifactId>
<version>3.2M1</version>
<executions>
<execution>
<id>cgen</id>
<configuration>
<superPkg>com.mycompany.model.generated</superPkg>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<destDir>${project.build.sourceDirectory}</destDir>
</configuration>
<goals>
<goal>cgen</goal>
</goals>
</execution>
<execution>
<id>cdbgen</id>
<configuration>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<driver>org.apache.derby.jdbc.ClientDriver</driver>
<url>jdbc:derby:memory:tracedb;create=true</url>
<username>test</username>
</configuration>
<goals>
<goal>cdbgen</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Bu, ana src/geçerli cayenne "datamap.map.xml" dosyası (gerektirir/kaynaklar), burada daha önce yapılmış bir tane:
<?xml version="1.0" encoding="utf-8"?>
<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd"
project-version="6">
<db-entity name="TEST">
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
</db-entity>
</data-map>
DÜZENLEME:
fazla bilgi ekleme.
derbyclient-10.10.1.1.jar sınıfı 'org.apache.derby.jdbc.ClientDriver' sınıfını içerir (Netbeans'ten JAR'yi genişletir).
[DEBUG] (f) classpathElements = [<PROJECT-PATH>\mvn\target\classes, <HOME-DIR>\.m2\repository\org\apache\derby\derbyclient\10.10.1.1\derbyclient-10.10.1.1.jar]
ÇÖZÜM:
-X bayrak CLASSPATH'E doğru JAR başvuruda bulunuyor gösteriyor gibi çalışan pom.xml (cevabı ve yorumumu bakınız):
<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>com.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-modeler-plugin</artifactId>
<version>3.2M1</version>
</plugin>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-plugin</artifactId>
<version>3.2M1</version>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.10.1.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>cgen</id>
<configuration>
<superPkg>com.mycompany.model.generated</superPkg>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<destDir>${project.build.sourceDirectory}</destDir>
</configuration>
<goals>
<goal>cgen</goal>
</goals>
</execution>
<execution>
<id>cdbgen</id>
<configuration>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
<url>jdbc:derby:memory:tracedb;create=true</url>
<username>test</username>
</configuration>
<goals>
<goal>cdbgen</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
1) 'org.apache.derby.jdbc.ClientDriver' aslında' derbyclient 'bağımlılığında bulunduğundan emin misiniz? 2) '-X' komut satırı parametresiyle çalışmaya çalışın ve söz konusu eklentinin yürütülmesi üzerine sınıf yolunun bu bağımlılığı içerip içermediğini görün. –
Maven araçlarının maven deposundan derbyclient.jar dosyasının bir kopyasını başarıyla alıp almadığını söyleyebilir misiniz? Ben genellikle Maven kullanmıyorum, ama bazen sürüm numarasının jar isminde kodlandığını düşünüyorum, belki de derbyclient_10_10_1_1.jar gibi bir şey almanız gerekebilir. –
Orijinal Yazımımı düzenlerim - ancak 1) ve 2) 'ye olan hızlı cevap, "evet" dir (JAR'dadır) ve 2) Sınıf yolunun doğru olduğundan (-X çıkışından) emin olun. – monojohnny