2014-12-22 2 views
3

나는 즉시 사용 가능한 Vaadin 응용 프로그램을 만들려고 시도했지만 지금까지 성공하지 못했습니다.가장 기본적인 Vaadin 응용 프로그램을 실행하는 방법

IntelliJ IDEA 14를 ​​사용하여 올바른 Vaadin Maven 아키타 입을 추가하고 응용 프로그램을 만들었습니다.
튜토리얼에 따라 src 아래에 몇 개의 파일 만있을 것으로 예상되는 세 개의 프로젝트 폴더 (제작, UI 및 위젯 세트)로 끝납니다. 어쨌든. 내가 톰캣에서 배포 할 때

그래서 지금은 악명 높은

요청 된 자원을 [/VAADIN/widgetsets/com.vaadin.DefaultWidgetSet/com.vaadin.DefaultWidgetSet.nocache.js] 하지 얻을 파일 시스템 또는 클래스 로더를 통해 발견되었습니다.

오류. 그것을 해결하기 위해 web.xml 파일을 변경하는 방법에 대한 충분한 기사. 그러나 변경할 web.xml 파일이 없습니다.

나는 또한 클라이언트 js를 추가 할 필요가 없으므로 나는 그런 것들을 정말로 필요로하지 않는다. 단지 서버 측 Vaadin이 필요하다.

전체 WidgetSet 종속성을 없애 버리면이 오류를 없애고 가장 기본적인 서버 측 Vaadin 응용 프로그램을 모든 멋진 것들없이 실행할 수 있습니까?

내가 클라이언트 컴파일러, 모든 참조를 주석 시도했습니다 다른 모든 것이 자바의 내 미약 한 지식이 날 수 있으며 그 과정에서 일을 잃은 위젯 셋.

몇 가지 천재 통찰력이 굉장합니다. 미리 감사드립니다.

답변

3

그래서 저는 Vaadin이 어떻게 작동하는지 대략적으로 알게되었습니다. 여기에 약간의 정보를 정리하고 관심있는 다른 사람들에게 관련 정보를 제공하기위한 배경 정보가 있습니다.

GWT 아이디어는 Java에서 앱을 실행하고 GWT 컴파일러를 통해 실행한다는 것입니다. 브라우저에서 직접 실행할 수있는 javascript가 제공됩니다. 컴파일러 자체가 GWT의 대부분입니다. 위젯이나 컴포넌트의 관점에서 readymade 기능을위한 옵션은 매우 슬림합니다. GWT 사용자 또는 기타 프레임 워크 제작자가 위젯/그래픽 갭을 채우도록하는 것이 더 많은 '자신의 생각'사고 방식입니다.

Vaadin은 GWT를 사용하지만 GWT를 기반으로하는 대부분의 프레임 워크와는 조금 다릅니다. 다른 GWT 확장 프레임 워크와 마찬가지로 Vaadin에는 위젯을 수정할 필요없이 앱의 대부분을 빌드 할 수있는 위젯 세트가 포함되어 있습니다. Vaadin이 다르게하는 일은 위젯을 미리 컴파일하고 맨 위에 배치하고 서버에서 위젯을 조종 할 수있는 통신 관리자를 제공한다는 것입니다. 이 중요한 차이점은 거의 모든 다른 GWT 프레임 워크에서 모든 UI 변경 후에 GWT 컴파일러를 실행해야 할 때 Vaadin에서 서버가 JSON 메시지로 레이아웃 및 위젯을 조정하기 때문에 사용자가하지 않아도된다는 점입니다. Vaadin에서는 위젯을 사용할 때가 아니라 위젯의 동작을 변경할 때 컴파일합니다.

Vaadin은 항상 응용 프로그램을 'GWT 컴파일'할 필요가 없으므로 기본 요구 사항에 맞게 사전 컴파일 된 위젯 세트를 제공 할 수 있습니다. 이것을 DefaultWidgetSet이라고합니다. 클라이언트 측 변경을하지 않거나 루트 디렉토리에있는 애드온을 사용하는 것으로 충분합니다.

실제 문제는 다음과 같습니다. 사용중인 아키타 입은 일주일 전에 나왔습니다. 나는 당신이 어떤 튜토리얼을 언급하고 있는지 알지 못한다. 그러나 내 생각은 여전히 ​​그것이 오래된 아키 타입을 참조하고 업데이트되어야한다는 것이다.

  1. 가 UI 폴더의 루트 폴더
  2. 실행 mvn jetty:run에 원형
  3. 실행 mvn install로 프로젝트를 생성 (또는 다른 UI를 배포 : 일반적으로 당신은 다음 단계로 응용 프로그램을 실행하는 얻을 수 있어야합니다

게시 한 오류 메시지가 표시되기 때문에 응용 프로그램이 실제로 미리 컴파일 된 버전을 사용하려고 시도하고 있음을 나타냅니다. 그게 이유 야 그것을 찾지 마라. (당신이 거기 있어야한다로) 전역으로 정의 할 수있다

<dependency> 
    <groupId>com.vaadin</groupId> 
    <artifactId>vaadin-client-compiled</artifactId> 
    <version>${vaadin.version}</version> 
</dependency> 

$ {vaadin.version을} 또는 당신은 입력 할 수 있습니다 : 그것은에 angel이라는 클라이언트 컴파일 의존성에서의 위젯 셋 모듈에서 와야한다 7.3.7처럼 직접 버전 번호를 입력하십시오. 웬일인지 찾아 내지 못하는 것 같습니다. 거기에 없다면 위젯 세트 pom.xml에 추가하고 위젯 세트 (또는 부모 모두 괜찮습니다)에서 mvn install을 실행하십시오. 그런 다음 ui로 이동하여 mvn jetty:run으로 서버를 다시 시작하십시오.

잘 모르겠지만 여기에 아키타 입을 사용자 정의 widgetset이 있고 미리 컴파일 된 widgetset에 의존하지 않는다고 생각합니다. 그런 다음 사용자 정의 위젯 대신 기본 위젯 세트를 원했고 UI 클래스에서 위젯 세트에 대한 주석을 제거했지만 기본 위젯에 대한 종속성은 추가하지 않았습니다.

유스 케이스가 매우 간단하므로 문제의 아키타 입은 조금 과장 될 수 있습니다. 클라이언트 측을 개발하지 않고 프로덕션 준비 배포 패키지 (프로덕션 모듈)를 빌드하기위한 모듈이 현재 범위에서 벗어나면 ui 및 widgetset에서 프로젝트가 분할 될 이유가 없습니다. 그런 의미에서 widgetset에서는 제작과 부모 모듈이 전혀 관련이 없습니다.

간단한 프로젝트 구조를 원하면 여기에있는 내 자식 repo를 복제 할 수 있습니다 : https://github.com/Peppe-/hello-world. 그것은 기존의 Vaadin 기본 싱글 모듈 아키타 입을 기본으로하고 있지만, 서버 쪽을 전혀 개발할 필요가없는 모든 것을 찢어 버렸습니다. pom.xml은 약 200 행의 선언에서 80으로 내려 갔지만 추가 기능을 사용하려면 다시 추가해야한다는 의미이기도합니다. 컴파일러와 마찬가지로 또는 CSS (테마 수정)를 추가 할 것인지 여부.

git clone https://github.com/Peppe-/hello-world.git 
cd hello-world 
mvn jetty:run 

또는 첫 번째 단계 후에 IDEA로 가져 와서 실행할 수 있습니다. 또한 자신의 패키지 이름을 사용하려면 패키지 이름을 src의 폴더 이름을 바꾸어 바꿉니다.

죄송합니다. 조금 옮겨서 미안 해요. 내가 무엇인가 놓친다면 모든 질문을하십시오.

+1

시간을내어 작성해 주신 정교한 답변에 감사드립니다. 그것은 매우 도움이되었다! 나는 지금 기본에 대해 더 잘 이해하고있다. –

관련 문제