maven生成了jaxb类 - ClassNotFoundException

时间:2015-08-21 12:24:41

标签: java maven jaxb

我有一个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。

1 个答案:

答案 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>