Maven e nome nella barra delle applicazioni

di fermat il
9 risposte
Ciao!

ho compilato un progetto Maven con mvn package.
questo il mio 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mp.photoalbum</groupId>
    <artifactId>MPPhotoGallery</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>MPPhotoGallery</name>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/de.huxhorn.lilith/de.huxhorn.lilith.3rdparty.junique -->
        <dependency>
            <groupId>de.huxhorn.lilith</groupId>
            <artifactId>de.huxhorn.lilith.3rdparty.junique</artifactId>
            <version>1.0.4</version>
        </dependency>
        <dependency>
            <groupId>com.drewnoakes</groupId>
            <artifactId>metadata-extractor</artifactId>
            <version>2.11.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.mp.photoalbum.Main</mainClass>
                </configuration>
            </plugin>
            <!-- PER PRODUZIONE -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.mp.photoalbum.Main</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
il problema sta che quanto avvio il programma, nella barra delle applicazioni si vede il nome del package, e non il nome del programma.
come dovrei impostare questa informazione??

9 Risposte

  • fermat ha scritto:


    il problema sta che quanto avvio il programma, nella barra delle applicazioni si vede il nome del package, e non il nome del programma.
    Alt. Intanto: che tipo di applicazione è? "console"? La avvii come/da dove?
  • No non è console.
    ma è un'applicazione che usa JavaFX.
    l'ho creata con intellij.
    poi la relase finale la creo direttamente da terminale con mvn package (con intellij ancora non ho ben capito come creare un jar, ma al momento mi interessa relativmante poco).

    una volta creato il jar:
    - su linux lo lancio con java -jar FILE.jar
    - su windows con il classico doppio click sul jar
  • fermat ha scritto:


    ma è un'applicazione che usa JavaFX.
    Se è una applicazione GUI ha finestra/e grafiche. Che hanno un titolo (che è anche quello che vedi in taskbar). E il titolo della finestra lo puoi certamente impostare, se ben ricordo: setTitle("titolo") sullo Stage.
  • 
        public static void openWindow(String fileFxml, String title, int width, int height, boolean resiz, Modality modality) throws IOException {
            Parent root = FXMLLoader.load(FXMLUtils.class.getResource(fileFxml));
            Stage stage = new Stage();
            File icon = new File(FXMLUtils.class.getClassLoader().getResource("puffo.png").getFile());
            stage.getIcons().add(new Image(icon.toURI().toString()));
            stage.setTitle(title);
            stage.setScene(new Scene(root, width, height));
            stage.setResizable(resiz);
            stage.initModality(modality);
            stage.show();
        }
    
    al momento di richiamare il metodo, passavo una stringa vuota come parametro.
    quindi in verità non impostavo un titolo.

    scusate, penso di essere un pò fuso!
  • fermat ha scritto:


    
            File icon = new File(FXMLUtils.class.getClassLoader().getResource("puffo.png").getFile());
            stage.getIcons().add(new Image(icon.toURI().toString()));
    
    Occhio .... perché questo mi pare un "giro" un po' inutile.
  • Ed infatti ho un problema anche su quello.

    se lancio il programma da intellij, l'icona nella taskbar si vede.
    se lancio il jar pacchettizzato con mvn package, non si vede.
    però dentro al jar l'icona c'è.
  • Niente come non detto.
    ho modificato così e funziona anche con il jar:
    
    stage.getIcons().add(new Image(FXMLUtils.class.getClassLoader().getResourceAsStream("puffo.png")));
    
  • fermat ha scritto:


    
    stage.getIcons().add(new Image(FXMLUtils.class.getClassLoader().getResourceAsStream("puffo.png")));
    
    Sì, molto più corretto e conciso.

    Ma si può anche fare es.

    new Image(FXMLUtils.class.getClassLoader().getResource("puffo.png").toExternalForm())

    Nel primo si ottiene un InputStream, in quest'ultimo un url in String.
  • Perfetto, grazie!!
Devi accedere o registrarti per scrivere nel forum
9 risposte