4
votes

I am new to JavaFX. I have created a Hello World project using maven. It works fine when I run it in Eclipse.

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Hello World!");
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
            System.out.println("Hello World!");
        }
    });
    StackPane root = new StackPane();
    root.getChildren().add(btn);
    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}

hello_world

I found the deployment tutorial, but when my program comes with maven, I have no idea how to build it.

When I try to build the application using build.fxbuild, I got this error.

Buildfile: C:\test\project\workspace\javafx-helloworld\build\build.xml

setup-staging-area:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\externalLibs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\externalLibs
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\project
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\project
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\projectRefs

do-compile:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\src
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\libs
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\classes
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\build\libs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\build\src
       [javac] Compiling 1 source file to C:\test\project\workspace\javafx-helloworld\build\build\classes

init-fx-tasks:
     [taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.

do-deploy:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\dist
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\dist\libs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\dist\libs

**BUILD FAILED
C:\test\project\workspace\javafx-helloworld\build\build.xml:93: Problem: failed to create task or type javafx:com.sun.javafx.tools.ant:resources
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.
No types or tasks have been defined in this namespace yet**
1
Do you really mean Maven, rather than e.g. Ant?Duncan Jones
I prefer using Maven, but I have no idea how to build it.Drogba
Oh, I see. So your task is to convert a project that currently builds with Ant into a Maven project?Duncan Jones

1 Answers

4
votes

There is now a maven plugin for JavaFX:

https://github.com/zonski/javafx-maven-plugin

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>package</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>[put your application main class here]</mainClass>
        <bundleType>ALL</bundleType>
    </configuration>
</plugin>