---
title: Building and deploying manually
description: Use a build utility to add directories, create deployment descriptors, and create a .jarfile to build and deploy your plugins with PingFederate.
component: pingfederate
version: 13.1
page_id: pingfederate:sdk_developers_guide:build_deploy_manually
canonical_url: https://docs.pingidentity.com/pingfederate/13.1/sdk_developers_guide/build_deploy_manually.html
llms_txt: https://docs.pingidentity.com/pingfederate/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: January 3, 2023
section_ids:
  before-you-begin: Before you begin
  about-this-task: About this task
  steps: Steps
---

# Building and deploying manually

Use a build utility to add directories, create deployment descriptors, and create a `.jar`file to build and deploy your plugins with PingFederate.

## Before you begin

To compile your project, you must have the following directories on your classpath:

* `<pf_install>/pingfederate/server/default/lib`

* `<pf_install>/pingfederate/lib`

* `<pf_install>/pingfederate/sdk/lib`

* `<pf_install>/pingfederate/sdk/plugin-src/<subproject-name>/lib`

## About this task

To build your project with another build utility, you must create the deployment descriptors for each of your plugins. The deployment descriptor files allow PingFederate to discover your plugins. Once this is complete, use the build tool to create a `.jar` file and deploy it within the appropriate directory.

## Steps

1. Add a new directory called `PF-INF` into your project. This directory must be at the root of your `.jar` file, similar to `META-INF`.

2. In `PF-INF`, add an appropriate text file for each type of plugin you created:

   | Plugin type                   | File name                      |
   | ----------------------------- | ------------------------------ |
   | IdP Adapter                   | idp-authn-adapters             |
   | SP Adapter                    | sp-authn-adapters              |
   | Custom Data Source            | custom-drivers                 |
   | Token Processor               | token-processors               |
   | Token Generator               | token-generators               |
   | Authentication Selector       | authentication-selectors       |
   | Password Credential Validator | password-credential-validators |
   | Identity Store Provisioner    | identity-store-provisioners    |
   | CIBA Authenticator            | oob-auth-plugins               |
   | Notification Publisher        | notification-sender            |

3. In each text file added, specify the fully-qualified class name of each plugin that implements the corresponding plugin interface. Place each class name on a separate line.

4. To create a `.jar`, archive the compiled class files along with the deployment descriptors using your build tool. The deployment descriptors must be in the `PF-INF` directory, located at the root of the `.jar` file.

5. To deploy your plugin, copy the `.jar` file and any third-party `.jar` files into the `<pf_install>/pingfederate/server/default/deploy` directory of the PingFederate installation.
