2009-12-20 22 views
7

Próbuję użyć wtyczki glassfish-maven (https://maven-glassfish-plugin.dev.java.net/) z GlassFish v3 (jestem na Macu i używam Eclipse) i nie mogę zainstaluj moją aplikację internetową. Wciąż napotykam:GlassFish v3 i glassfish-maven-plugin (Mac)

Hasło główne jest wymagane do uruchomienia domeny. Bez konsoli, bez monitowania. Powinieneś utworzyć domenę za pomocą --savemasterpassword = true lub udostępnić plik haseł opcją --passwordfile.

Oto odpowiednia część mojego pliku POM.

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <property> 
       <name>phase</name> 
       <value>development</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.glassfish.maven.plugin</groupId> 
        <artifactId>maven-glassfish-plugin</artifactId> 
        <version>2.2-SNAPSHOT</version> 
        <configuration> 
         <glassfishDirectory>${glassfish.directory}</glassfishDirectory> 
         <user>${glassfish.user}</user> 
         <passFile>${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords</passFile> 
         <domain> 
          <name>${project.artifactId}</name> 
         </domain> 
         <components> 
          <component> 
           <name>${project.artifactId}</name> 
           <artifact>${project.build.directory}/artifacts/${project.artifactId}.war</artifact> 
          </component> 
         </components> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
     <pluginRepositories> 
      <pluginRepository> 
       <id>ocean</id> 
       <url>http://maven.ocean.net.au/snapshot</url> 
       <releases> 
        <enabled>false</enabled> 
        <updatePolicy>never</updatePolicy> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </snapshots> 
      </pluginRepository> 
     </pluginRepositories> 
    </profile> 
</profiles> 

Oto komenda start-domain, którą wykonuje Maven.

asadmin --host localhost --port 4848 --user Administrator --passwordfile /var/folders/sk/skcc8rAVGSynOBBaOwWN3U+++TI/-Tmp-/mgfp5377058868244877698.tmp --interactive = false --echo = true --terse = true uruchomienie domeny --debug = false --domaindir/Applications/GlassFish/v3/glassfish/domains help = false --upgrade = false --verbose = false mvnrepo

Plik --password używa pliku tymczasowego, więc domyślam się, że to jest problem. Z jakiegoś powodu parametr passFile nie działa.

Wszelkie pomysły? Myliłem się z moim założeniem?

+0

Czy upewniłeś się, że twoje pom zmienne są poprawne? – Bozho

+0

Tak, upewniłem się, że moje zmienne POM zostały rozwiązane. – anthonator

Odpowiedz

11

W Fairly Complete Configuration Example, rzeczywiście istnieje odniesienie do elementu <passFile> ale dokumentacja różnych celów nie wspomina ten element i odnoszą się do <passwordFile> zamiast (patrz na przykład glassfish:start-domain lub glassfish:deploy). Tak, spróbuj zaktualizować konfigurację wtyczki w swoim profilu odpowiednio:

<plugin> 
    <groupId>org.glassfish.maven.plugin</groupId> 
    <artifactId>maven-glassfish-plugin</artifactId> 
    <version>2.2-SNAPSHOT</version> 
    <configuration> 
    <glassfishDirectory>${glassfish.directory}</glassfishDirectory> 
    <user>${glassfish.user}</user> 
    <passwordFile>${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords</passwordFile> 
    <domain> 
     <name>${project.artifactId}</name> 
    </domain> 
    <components> 
     <component> 
     <name>${project.artifactId}</name> 
     <artifact>${project.build.directory}/artifacts/${project.artifactId}.war</artifact> 
     </component> 
    </components> 
    </configuration> 
</plugin> 

Na marginesie, polecam maven-embedded-glassfish-plugin który pozwala uruchomić GlassFish w jednym JVM używając swojego wbudowanego API. Bardzo dobrze. Aby uzyskać więcej informacji, patrz Using maven plugin for v3 embedded glassfish.

AKTUALIZACJA: Zrobiłem kilka dalszych testów i nie mogłem odtworzyć twojego problemu na moim komputerze (westchnienie).

Najpierw stworzyłem nową domenę, wykonując następujące polecenia (od <glassfish_home>/bin):

$ ./asadmin create-domain --savemasterpassword=true maven-glassfish-testcase 

Potem stworzył nową webapp przy użyciu Maven za webapp Archetyp:

$ mvn archetype:create -DgroupId=com.mycompany.app \ 
     -DartifactId=maven-glassfish-testcase \ 
     -DarchetypeArtifactId=maven-archetype-webapp 

I uaktualniony pom.xml świeżo utworzonego webappa:

<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.mycompany.app</groupId> 
    <artifactId>maven-glassfish-testcase</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>maven-glassfish-testcase Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
    <glassfish.home>/home/pascal/opt/glassfishv3/glassfish</glassfish.home> 
    <domain.username>admin</domain.username> 
    </properties> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>ocean</id> 
     <url>http://maven.ocean.net.au/snapshot</url> 
     <releases> 
     <enabled>false</enabled> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>always</updatePolicy> 
     </snapshots> 
    </pluginRepository> 
    </pluginRepositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>maven-glassfish-testcase</finalName> 
    <plugins> 
     <plugin> 
     <groupId>org.glassfish.maven.plugin</groupId> 
     <artifactId>maven-glassfish-plugin</artifactId> 
     <version>2.2-SNAPSHOT</version> 
     <configuration> 
      <glassfishDirectory>${glassfish.home}</glassfishDirectory> 
      <user>${domain.username}</user> 
      <passwordFile>${glassfish.home}/domains/${project.artifactId}/master-password</passwordFile> 
      <debug>true</debug> 
      <echo>true</echo> 
      <domain> 
      <name>${project.artifactId}</name> 
      <adminPort>4848</adminPort> <!-- mandatory for mvn glassfish:deploy --> 
      </domain> 
      <components> 
      <component> 
       <name>${project.artifactId}</name> 
       <artifact>${project.build.directory}/${project.build.finalName}.war</artifact> 
      </component> 
      </components> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Przy tej konfiguracji działa mvn glassfish:start-domain daje następujący wynik:

 
$ mvn glassfish:start-domain 
[INFO] Scanning for projects... 
[INFO] snapshot org.glassfish.maven.plugin:maven-glassfish-plugin:2.2-SNAPSHOT: checking for updates from ocean 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building maven-glassfish-testcase Maven Webapp 
[INFO] task-segment: [glassfish:start-domain] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [glassfish:start-domain {execution: default-cli}] 
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/master-password --interactive=false --echo=true --terse=true start-domain --debug=true --domaindir /home/pascal/opt/glassfishv3/glassfish/domains --help=false --upgrade=false --verbose=false maven-glassfish-testcase 
[INFO] Started domain: maven-glassfish-testcase 
[INFO] Domain location: /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase 
[INFO] Log file: /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/logs/server.log 
[INFO] Admin port for the domain: 4848 
[INFO] Debug port for the domain: 9009 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 27 seconds 
[INFO] Finished at: Mon Dec 21 20:16:17 CET 2009 
[INFO] Final Memory: 4M/53M 
[INFO] ------------------------------------------------------------------------ 

Jak widać, opcja --passwordfile przechodzi poprawnie przy użyciu określonego pliku w POM. Innymi słowy, wszystko działa zgodnie z oczekiwaniami. Może spróbuj z twardo zakodowaną ścieżką do pliku haseł, aby debugować to ustawienie, powinno działać!

+0

Zgadza się. Dokumentacja odnosi się do passFile. Próbowałem passwordFile i nie miałem szczęścia. Spróbuję wtyczki, o której wspomniałeś. – anthonator

+0

Udało mi się uruchomić wtyczkę typu "plug-in". To zrobi to, czego potrzebuję. – anthonator

+0

Pascal, używając polecenia 'asadmin', założyłeś, że' 'jest katalogiem głównym dystrybucji glassfish (np.'/Users/foo/glassfish3'). Następnie w pliku POM założyłeś, że jest to katalog '/glassfish' (np.' Users/foo/glassfish3/glassfish'). – Behrang

1

Zajęło mi trochę czasu uświadomienie sobie, że przypadkowo opuściłem właściwość "adminPassword" w konfiguracji Maven-Glassfish-Plugin (więc miałem ustawione zarówno adminPassword, jak i passwordFile). Wtyczka nadal używała tymczasowego pliku hasła zamiast mojego, powodując powyższy błąd.

Na wypadek, gdyby ktoś inny był tak głupi jak ja;)