2016-06-09 4 views
0

학습 목적으로 "chocolatestore-model""springchocolatestore" 두 개의 프로젝트를 다운로드했습니다. "springchocolatestore"는 "chocolatestore-model"에 의존합니다. 즉 "chocolatestore-model"의 서비스를 사용합니다.Spring MVC와의 Maven 종속성 문제

"springchocolatestore"의 maven-Dependencies 폴더에 "chocolatestore-model"이 있습니다. 이제 새로운 프로젝트를 만들었고 "chocolatestore-model"을 사용하여 서비스를 사용할 수있게하려고합니다. 내 프로젝트의 maven-dependencies 안에 그것을 가져 오는 것이 어렵다는 것을 알고 있습니다.

이 이유로 저는 "springchocolatestore"와 동일한 pom.xml을 복사하여 새 프로젝트에 붙여 넣기로 결정했습니다. 파일을 저장 한 후 "chocolatestore-model"이 새 프로젝트의 Maven 종속성에 나타나지 않습니다.

첫 번째 두 개의 프로젝트를 처음 복사 할 때 튜토리얼에서 "chocolatestore-model"을 마우스 오른쪽 버튼으로 클릭하고 Run-As-> maven-install을 선택하면 자동으로 설치되었는지 여부를 알 수 없습니다 "springchocolatestore"maven-dependencies 폴더.

새내기가 maven이므로 POM 파일의 모든 것을 이해하기 어렵습니다. 이들은 받는다는 파일 ::

"springchocolatestore의 pom.xml 파일"입니다 ::

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.packtpub</groupId> 
    <artifactId>springchocolatestore</artifactId> 
    <name>springchocolatestore</name> 
    <packaging>war</packaging> 
    <version>1.0.0-BUILD-SNAPSHOT</version> 
    <properties> 
     <java-version>1.7</java-version> 
     <org.springframework-version>4.0.2.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.6.10</org.aspectj-version> 
     <org.slf4j-version>1.6.6</org.slf4j-version> 
    </properties> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-framework-bom</artifactId> 
       <version>4.0.2.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-oxm</artifactId> 
     </dependency> 

     <!-- Spring HATEOAS --> 
     <dependency> 
      <groupId>org.springframework.hateoas</groupId> 
      <artifactId>spring-hateoas</artifactId> 
      <version>0.16.0.RELEASE</version> 
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 


     <!-- @Inject --> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- Freemarker --> 
     <dependency> 
      <groupId>org.freemarker</groupId> 
      <artifactId>freemarker</artifactId> 
      <version>2.3.20</version> 
     </dependency> 

     <!-- Apache Tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-extras</artifactId> 
      <version>3.0.0</version> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Chocolate store Model dependency --> 
     <dependency> 
      <groupId>com.packtpub.springmvc.chocolatestore.model</groupId> 
      <artifactId>chocolatestore-model</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.0</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <additionalProjectnatures> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
        </additionalProjectnatures> 
        <additionalBuildcommands> 
         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
        </additionalBuildcommands> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <compilerArgument>-Xlint:all</compilerArgument> 
        <showWarnings>true</showWarnings> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>org.test.int1.Main</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

"chocolatestore 모델의 pom.xml"::

<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.packtpub.springmvc.chocolatestore.model</groupId> 
    <artifactId>chocolatestore-model</artifactId> 
    <packaging>jar</packaging> 
    <version>1.2</version> 
    <name>chocolatestore-model</name> 

    <properties> 

     <!-- Generic properties --> 
     <java.version>1.7</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

     <!-- Spring --> 
     <spring-framework.version>4.0.1.RELEASE</spring-framework.version> 

     <!-- Hibernate/JPA --> 
     <hibernate.version>4.2.2.Final</hibernate.version> 

     <!-- Logging --> 
     <logback.version>1.0.13</logback.version> 
     <slf4j.version>1.7.5</slf4j.version> 

     <!-- Test --> 
     <junit.version>4.11</junit.version> 

    </properties> 

    <dependencies> 
     <!-- Spring and Transactions --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 

     <!-- Logging with SLF4J & LogBack --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>${logback.version}</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- Hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>cglib</groupId> 
        <artifactId>cglib</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>dom4j</groupId> 
        <artifactId>dom4j</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>3.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>4.3.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.0.0.GA</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring-framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-pool</groupId> 
      <artifactId>commons-pool</artifactId> 
      <version>1.5.6</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>xml-apis</groupId> 
        <artifactId>xml-apis</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 


     <!-- Database --> 
     <dependency> 
      <groupId>org.hsqldb</groupId> 
      <artifactId>hsqldb</artifactId> 
      <version>2.2.9</version> 
     </dependency> 


     <!-- Test Artifacts --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring-framework.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Commons --> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.1</version> 
     </dependency> 

     <!-- Jackson --> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.13</version> 
     </dependency> 


    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
        <encoding>${project.build.sourceEncoding}</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <encoding>${project.build.sourceEncoding}</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

내 새로운 프로젝트 POM.XML은 "chocolatestore-model"서비스를 사용하기 때문에 "springchocolatestore"와 동일합니다. 단지이 부분 변경 :: 내 새로운 프로젝트의 받는다는 종속성에서 "chocolatestore 모델"을 포함하는 데 도움이 사람을 좋아하는 것

<modelVersion>4.0.0</modelVersion> 
<groupId>com.packtpub</groupId> 
<artifactId>springmvc</artifactId> 
<name>FirstSpringMVCProject</name> 
<packaging>war</packaging> 
<version>1.0.0-BUILD-SNAPSHOT</version> 

. 당신의 도움이

+0

야, 절대적으로 쉽지! 다음을보십시오 : https://maven.apache.org/guides/index.html 정말 좋은 문서! 그리고 정말 좋은 튜토리얼. 그냥 읽고, 괜찮을거야! – Ivan

답변

0
  • MVN에 대한 덕분에 우리가 (다시 사용할 수있는 무언가를) 이슈를 부르는 구축 않고 설치하고 유물은 받는다는 로컬 저장소로 사용할 수 있습니다. Maven 구성을 변경하지 않은 경우 '설치'를 수행 한 후에 아티팩트 (빌드 한 구성 요소)는 ~/m2/repository (홈 디렉토리 관련)에 위치합니다. 물론 생성 된 2 개의 아티팩트가 ~/m2/repository/com/packtpub/springchocolatestore 및 ~/m2/repository/com/packtpub/springmvc/chocolatestore/model/chocolatestore-model에 위치하는지 확인할 수 있습니다. 생성 된 최신 아티팩트는 ~/m2/com/packtpub/springmvc에 있습니다. 검토 할 수 있듯이 과 일치하지 않는 이물 이름이 있습니다. springmvcgroupid인공물으로 사용하는 것은 좋지 않습니다.
  • 이슈를 재사용하는 것은 매우 쉽습니다. artifactid를 pom의 섹션 종속성으로 참조하십시오. 이미 springchocolatestore의 치어에 그것을했다 : 같은 의존성을 사용하려는 경우
    ... <!-- Chocolate store Model dependency --> <dependency> <groupId>com.packtpub.springmvc.chocolatestore.model</groupId> <artifactId>chocolatestore-model</artifactId> <version>1.2</version> </dependency> </dependencies> 이 springmvc의 치어에서 동일한 작업을 수행. chocolatestore-model을 재사용하는 경우 사용 된 곳을 의미하며 '잘'표시 할 수 있습니다. 을 사용하십시오. 코드를 변경하려면 chocolatestore-model을 다시 작성해야합니다. 그것은 당신이 그것을 수정할 수있는 그것을 사용하는 곳이 아닙니다. 변경하고 다시 설치 (설치) 한 다음 사용합니다.
  • 이슈 ID springmvc를 빌드하고 (로컬로) springmvc에 cd를 입력 한 다음 clean install (명령 줄)을 입력하십시오. 처음에는 Maven과 관련하여 어려운 것은 몇 줄의 pom.xml을 만드는 것보다 더 쉽습니다. 그런 다음 (물론 규칙을 따르면) 쉽게 로컬에서 소프트웨어를 빌드 할 수 있습니다. 구성에 대한 규칙이라고합니다.


희망이 조금 있습니다.