Create a Sample Maven Project and add below dependencies to POM.xml

<!-- for Selenium -->
<dependency>
 <groupid>org.seleniumhq.selenium</groupid>
 <artifactid>selenium-java</artifactid>
 <version>3.0.0</version>
</dependency>
<!-- for Cucumber -->
<dependency>
 <groupid>info.cukes</groupid>
 <artifactid>cucumber-java8</artifactid>
 <version>1.2.5</version>
 <scope>test</scope>
</dependency>
<dependency>
 <groupid>info.cukes</groupid>
 <artifactid>cucumber-junit</artifactid>
 <version>1.2.5</version>
 <scope>test</scope>
</dependency>
<dependency>
 <groupid>info.cukes</groupid>
 <artifactid>cucumber-picocontainer</artifactid>
 <version>1.2.5</version>
 <scope>test</scope>
</dependency>
<!-- for JUnit-->
<dependency>
 <groupid>junit</groupid>
 <artifactid>junit</artifactid>
 <version>4.12</version>
 <scope>test</scope>
</dependency>

Create Sample feature file LoginTest.feature

 Feature: Login Test
 @login 
 Scenario: Successful Login with Valid Credentials
  Given User is on Home Page
  When User Navigate to Test Page
  And User enters UserName and Password
  Then Verify Login Successful message

Create step definition file

package com.selcukes.steps;

import java.util.concurrent.TimeUnit;

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.api.java8.En;


public class LoginStepdefs implements En
{
    public static WebDriver driver;
    public LoginStepdefs()
    {
     Given("^User is on Home Page$", () -> {
      System.setProperty("webdriver.gecko.driver", "src/main/resources/geckodriver.exe");
      driver = new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get("http://techyworks.blogspot.in/");
            String strPageTitle = driver.getTitle();
            System.out.println("Page Title:" + strPageTitle);
     });

     When("^User Navigate to Test Page$", () -> {
      driver.findElement(By.xpath("//*[@href='/p/test.html']")).click();
         
     });

     When("^User enters UserName and Password$", () -> {
      driver.findElement(By.id("log")).sendKeys("Techy");   
         driver.findElement(By.id("pwd")).sendKeys("Works");
         driver.findElement(By.id("login")).click();
         
     });

     Then("^Verify Login Successful message$", () -> {
       
      Assert.assertEquals("Login Successful..",driver.findElement(By.id("response")).getText());
      driver.quit();
     });
    }
}

Create a runner class file

package com.selcukes.runners;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@CucumberOptions(plugin = { "html:target/cucumber-results/cucumber-html-report",
  "json:target/cucumber-results/cucumber.json",
  "usage:target/cucumber-results/cucumber-usage.json" }, 
         monochrome = true, features = "src/test/resources/features/", glue = {
    "com.selcukes.steps" }, tags = { "@login" })
@RunWith(Cucumber.class)
public class LoginTestRunner {
}