我如何从另一个模块maven导入类

时间:2016-05-30 05:53:37

标签: java maven pom.xml

我无法将类从ejb模块导入到Web模块。 ejb类在包中:jsf在模块ejb中,我想将它导入到web模块包中:jsf

import jsf.DaneOsobowe; - 剂量工作

我错了什么?

掌握pom:

    <?xml version="1.0" encoding="UTF-8"?>
<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>jsf</groupId>
  <artifactId>PAW</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>PAW</name>

  <modules>
    <module>PAW-ear</module>
    <module>PAW-web</module>
    <module>PAW-ejb</module>
  </modules>

  <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>jsf</groupId>
        <artifactId>PAW-ejb</artifactId>
        <version>1.0</version>
        <type>ejb</type>
        <scope>compile</scope>
      </dependency>

      <dependency>
        <groupId>jsf</groupId>
        <artifactId>PAW-web</artifactId>
        <version>1.0</version>
        <type>jar</type>
        <scope>compile</scope>

      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

ejb pom:

    <?xml version="1.0" encoding="UTF-8"?>
<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>

  <parent>
    <artifactId>PAW</artifactId>
    <groupId>jsf</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <groupId>jsf</groupId>
  <artifactId>PAW-ejb</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>ejb</packaging>

  <name>PAW-ejb</name>

  <properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.1.Final</version>
    </dependency>
    <dependency>
      <groupId>unknown.binary</groupId>
      <artifactId>hibernate-jpamodelgen-4.3.1.Final</artifactId>
      <version>SNAPSHOT</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jsf</groupId>
      <artifactId>PAW-ejb</artifactId>
      <type>ejb</type>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <compilerArguments>
            <endorseddirs>${endorsed.dir}</endorseddirs>
          </compilerArguments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <ejbVersion>3.1</ejbVersion>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <outputDirectory>${endorsed.dir}</outputDirectory>
              <silent>true</silent>
              <artifactItems>
                <artifactItem>
                  <groupId>javax</groupId>
                  <artifactId>javaee-endorsed-api</artifactId>
                  <version>7.0</version>
                  <type>jar</type>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <id>unknown-jars-temp-repo</id>
      <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name>
      <url>file:${project.basedir}/lib</url>
    </repository>
  </repositories>
</project>

web pom:

    <?xml version="1.0" encoding="UTF-8"?>
<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>
  <parent>
    <artifactId>PAW</artifactId>
    <groupId>jsf</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <groupId>jsf</groupId>
  <artifactId>PAW-web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>PAW-web</name>

  <properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.primefaces</groupId>
      <artifactId>primefaces</artifactId>
      <version>5.0</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.2.2.Final</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.1.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.1-api</artifactId>
      <version>1.0.0.Final</version>
    </dependency>
    <dependency>
      <groupId>unknown.binary</groupId>
      <artifactId>mysql-connector-java-5.1.23-bin</artifactId>
      <version>SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>1.1.0.Final</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.primefaces.extensions</groupId>
      <artifactId>primefaces-extensions</artifactId>
      <version>4.0.0</version>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-web-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jsf</groupId>
      <artifactId>PAW-ejb</artifactId>
      <type>ejb</type>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <compilerArguments>
            <endorseddirs>${endorsed.dir}</endorseddirs>
          </compilerArguments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <outputDirectory>${endorsed.dir}</outputDirectory>
              <silent>true</silent>
              <artifactItems>
                <artifactItem>
                  <groupId>javax</groupId>
                  <artifactId>javaee-endorsed-api</artifactId>
                  <version>7.0</version>
                  <type>jar</type>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <url>http://repository.primefaces.org/</url>
      <id>PrimeFaces-maven-lib</id>
      <layout>default</layout>
      <name>Repository for library PrimeFaces-maven-lib</name>
    </repository>
  </repositories>
</project>

1 个答案:

答案 0 :(得分:0)

抱歉,我对EAR + EJB的东西不是很熟悉,因为在大多数情况下我遇到的都是严重的过度复杂化。但是,如果这是您需要使用的......

查看an answer explaining them in some detail

基本上,EJB应该包含在其他地方定义的某些接口的实现。 WAR不会知道它在运行时会得到什么实现,它只知道接口,所以它应该依赖于接口。让我们调用这些接口API,你将获得以下项目结构:

parent
|- api
|- ejb
|- war
\- ear

其中:

  1. API只包含接口(不指定包装,它默认为jar)
  2. EJB依靠API来实现部分/全部接口
  3. WAR依赖API来使用它们(例如通过接口注入点)
  4. EAR依靠WAR和EJB将两者捆绑成最终存档
  5. 如果这对于您的用例而言过于复杂,您可以从包含所有内容的WAR开始,稍后重构。您可以将.war部署到任何应用程序服务器,甚至只是没有完整应用程序服务器功能的容器。