origoni's Blog from Millky

origoni의 스프링 블로그 입니다.

[블로그개발_03] 이클립스(STS)에서 GitHub에 있는 메이븐 프로젝트 받아서 시작해보기. (+ gradle to maven)

블로그개발 시리즈 - 다른글 : http://millky.com/@origoni/folder/30/post/list

라이브 데모 : http://blog.millky.com/post/list

자바 웹 개발 시작하기 : http://www.slideshare.net/origoni/presentations




이클립스(STS)에서 GitHub에 있는 메이븐 프로젝트 받아서 시작해보자.
추가적으로 메이븐에서 그래들로 전환한 이야기도 해보자. (아래)




우선 http://millky.com/@origoni/post/1100 요 글을 따라 이클립스(Eclipse or STS)가 설치된 상태라면 GitHub에 있는 프로젝트를 import 해보자.


필수! 먼저 lombok 플러그인이 설치되어 있어야 합니다.
[블로그개발_10] 글에 부제목 추가 (Post Entity 모델링 +lombok)

STS 3.7.0 (Eclipse Mars) 이상 사용하시는 분들은
OSX STS 3.7.0 (Eclipse Mars) 에서 Lombok 세팅하기 요글 참고 부탁드린다.


위에 글에서는 처음부터 만드는 법을 보여주고 있어서 끝까지 따라 할 필요는 없다.




임포트 메뉴에서 Maven -> Check out Maven Project form SCM 을 선택한다.


밀키 주소를 적고..


아 주소는 여기에 있다. https://github.com/origoni/Spring-Blog.git
https://github.com/origoni/Spring-Blog



여기 있는 복사 버튼 누르면 된다.


주소가 잘 입력되었으며 Finish 버튼을 누르면 된다.


이런 화면을 만났다면 잘 된거다.


이제 프로젝트를 바로 실행해 볼 수 있다.



요렇게 시작을 해 보자.

물론 톰캣에 올려도 된다.



톰켓 세팅? 부분은 나중에 다루게 될 것이다.


우선은 잘 올라오는지 확인해보자.



잘 올라왔다.

Started Booter in 4.502 seconds (JVM running for 4.998)


이제 로컬호스트에 방문해 보자.

http://localhost:8080/


잘 나온다. 


이렇게 해서 간단하게 이클립스(STS)에서 Github에 있는 메이븐 프로젝트 받아서 시작해보기를 완료 하였다.


앞으로 스프링 블로그 개발 관련글은 아래에 모아 둘 예정이다.

http://millky.com/@origoni/folder/30/post/list



이제 못다한 이야기를 해보자.


Spring-Blog from Millky 기본 빌드를 그래들(Gradle)로 하고 있었다.

시작하기 가장 쉬운 예를 만든다고 하고 있었지만 (그리고 무료 툴인 이클립스를 사용하고;; 인텔리제이 좋긴 하지만 회사에서 사줘서 쓰는거지 ㅠㅠ) 

Gradle은 https://github.com/origoni/Spring-Blog 에 올려놓은 코드를 막상 다운 받아 실행해 보려 하니...

막상 이클립스에서 쉽지 않았다;;; (IntelliJ에서는 한방에 된다.. 이클립스도 언젠간 되겠지...)


진행은 이렇게 하였다.







하다가 하다가..
부트런은 어찌 어찌 콘솔에서 되는데...
쉽게 하자고 했는데 콘솔까지 열기는 싫고 ㅠㅠ


그래서... Spring-Blog의 기본 빌드를 당분간? 메이븐으로 전환한다.


처음에는 gradle to maven 컨버터가 어디 있겠지 했는데..

그 반대일을 해주는 사이트는 몇 군데 (http://mvn2gradle.codetutr.com/) 있는데 막상 그래들을 메이븐으로 컨버팅 해주는 사이트는 없는거다..


좀 더 구글링 하다 아래의 글을 발견하였다.

https://codexplo.wordpress.com/2014/07/20/gradle-to-maven-conversion-and-vice-versa/

간단하게 요약하면.

apply plugin: 'maven' 설정 하고

gradle install을 수행하면 build/poms 폴더에  pom 파일이 생긴다!


잘 동작해서 간단하게 마이그레이션 가능하였다.

이런 저런 사유로 앞으로 스프링 블로그 예제는 Maven으로 빌드 한다.

그리고 결정적으로 아직은 Gradle 에 대한 진입장벽? 이 있는것 같다;; 빌드서버에서 지원하지 않는다던지.. 사실 간단한 블로그라 간단하게 사용하기때문에 상관은 없지만.
빌드관련 예제는 아니니까..

나중에 이클립스(STS)가 Gradle를 잘 지원하게 되고 사람들이 많이 쓰게되면 다시 돌아오도록 하자 ^^;;



ssongyy 2015-07-02 23:36:01

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':install'.
> Could not publish configuration 'archives'
> For artifact {:spring-blog:unspecified:war}: The groupId cannot be empty.



위와 같은 에러가 나는데 어떻게 하나요.ㅠㅠ maven 으로 안옮겨집니다.;;

origoni 2015-07-12 15:02:25

안녕하세요.
답변이 너무 늦어서 죄송합니다.
gradle에서 메이븐으로 옮기는것까지 실습 중이셨군요 ㅠㅠ
우선 에러를 보면 버전 정보가 없어서 에러가 발생하는것으로 생각됩니다.
확인 부탁드립니다 ^^;

chobo 2015-09-18 14:04:27

java.lang.Error: Unresolved compilation problem:
The constructor UserSession(String, String, String) is undefined 톰캣으로 런할시 이런에러가떠요
그리고 롬은 이클립스.ini랑 같이두면되는건가요?

kyungin 2016-09-19 13:58:35

convert to maven 을 해야하는건가요?

그럼 오류가 많이 터지는데 get set 에서도 나오고 gradle install 이 잘 이해 안가네요

reaiproject 2017-04-28 17:26:12

밀키야 고마워 너덕분에 우리 성공했어 좋은글 계속 올려줘 파이팅!

nayasik 2018-10-02 10:18:28

밀키님 안녕하세요 항상 감사하게 보고있습니다
올려놓으신글보면서 천천히 따라가고있는 초보개발자인데요
'Importing Maven projects' has encountered a problem.
Can't rename
D:\Users\sik\Documents\workspace-spring-tool-suit-e-4-4.0.0.RELEASE\maven.1538415055495. 라고 에러가뜨면서 임폴트가 안됩니다.. 혹시 해결책 알고계신다면 알려주실수있을까요? 항상 감사합니다

shicrystal 2020-01-04 23:01:12

안녕하세요~~
올려주신 게시글 보고 따라하고 있는중입니다,,,
헌데 git에서 해당 프로젝트를 받고 나서 실행했는데..
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-01-04 22:49:46.481 ERROR 13496 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:859) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at com.millky.blog.Booter.main(Booter.java:10) ~[classes/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:402) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1765) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE]
... 16 common frames omitted
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:129) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
... 20 common frames omitted
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:382) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
... 28 common frames omitted
Caused by: java.lang.reflect.InvocationTargetException: null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
... 38 common frames omitted
Caused by: java.lang.NullPointerException: null
at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:103) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:151) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:134) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:131) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:530) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:515) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:451) ~[javassist-3.22.0-GA.jar:na]
at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:422) ~[javassist-3.22.0-GA.jar:na]
at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:75) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:156) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:58) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
... 44 common frames omitted

이런 에러가 나오네요 ㅠ 아무것도 안건드리고 그냥 실행만 시켰어요..
염치없지만 왜 이런지 알려주실 수 있을까요?
back to top