我有一个maven模型项目,我通过maven命令生成jaxb类 - clean install 并且在目标文件夹下生成jaxb类,并且在.m2存储库文件夹下生成jar文件。
现在在我的另一个项目中,将此jar添加为具有正确组ID和artifactId的依赖项。
但是我得到ClassNotFoundException并为那些生成的jaxb类编译错误。
我正在更新我的问题以添加更多详细信息。
模型项目的Pom文件。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>spf-ssp-generate</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generateDirectory>${project.build.directory}/jaxbclasses/pqr/xyz</generateDirectory>
<generatePackage>abc.vo.apply.v1</generatePackage>
<schemaIncludes>
<include>MyXSD.xsd</include>
</schemaIncludes>
</configuration>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/resources</schemaDirectory>
<extension>true</extension>
<args>
<arg>-XtoString</arg>
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.4</version>
</plugin>
</plugins>
</configuration>
</plugin>
</plugins>
</build>
在clean install
上,它会生成下面的类文件。
目标
jaxbclasses
PQR
XYZ
包名 - abc.vo.apply.v1
我有另一个两个Maven项目(jar),假设为,A&amp; B. 现在我可以将jaxb模型项目用作maven依赖项,并且编译正常。
现在我的Web项目不是Maven项目 - 它是基于Ant的Liferay。 我手动将A,B和Jaxb Model项目复制到lib文件夹中。 它编制罚款。但是我得到了ClassNotFoundException。
答案 0 :(得分:1)
这很可能是因为target
目录默认情况下从不包含在jar文件中。尝试配置要在(例如)target/generated
下生成的JAXB类。然后,将其添加到POM的构建插件部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-java-sources</id>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>